summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Chen <chagel@gmail.com>2009-07-29 00:01:16 +0800
committerMike Chen <chagel@gmail.com>2009-07-29 00:01:16 +0800
commitb6aa7c847234ed985ec693c53633a7f0f3e2cd9c (patch)
tree0ec7772b1fa7c1a88bd60c585cc0c8a7adbccc1a
parent0173b3d5978a81d785ec1431f09f325e45114709 (diff)
downloadaskbot-b6aa7c847234ed985ec693c53633a7f0f3e2cd9c.tar.gz
askbot-b6aa7c847234ed985ec693c53633a7f0f3e2cd9c.tar.bz2
askbot-b6aa7c847234ed985ec693c53633a7f0f3e2cd9c.zip
merge Evgeny's English and Botum's Spanish translations
-rw-r--r--development.log31
-rw-r--r--django_authopenid/forms.py18
-rw-r--r--forum/const.py74
-rw-r--r--forum/feed.py12
-rw-r--r--forum/forms.py87
-rw-r--r--forum/models.py9
-rw-r--r--forum/templatetags/extra_tags.py52
-rw-r--r--forum/user.py42
-rw-r--r--forum/views.py11
-rw-r--r--locale/en/LC_MESSAGES/django.mobin0 -> 367 bytes
-rw-r--r--locale/en/LC_MESSAGES/django.po1973
-rw-r--r--locale/es/LC_MESSAGES/django.mobin0 -> 367 bytes
-rw-r--r--locale/es/LC_MESSAGES/django.po1973
-rw-r--r--locale/zh_CN/LC_MESSAGES/django.mobin8955 -> 24652 bytes
-rw-r--r--locale/zh_CN/LC_MESSAGES/django.po2308
-rw-r--r--log/cnprog.log (renamed from middleware/__init__.py)0
-rw-r--r--templates/404.html27
-rw-r--r--templates/500.html28
-rw-r--r--templates/answer_edit.html83
-rw-r--r--templates/answer_edit_tips.html589
-rw-r--r--templates/ask.html87
-rw-r--r--templates/authopenid/changeemail.html4
-rw-r--r--templates/authopenid/complete.html37
-rw-r--r--templates/authopenid/sendpw.html17
-rw-r--r--templates/authopenid/settings.html10
-rw-r--r--templates/authopenid/signin.html47
-rw-r--r--templates/authopenid/signup.html25
-rw-r--r--templates/badge.html13
-rw-r--r--templates/badges.html28
-rw-r--r--templates/base.html30
-rw-r--r--templates/base_content.html28
-rw-r--r--templates/book.html52
-rw-r--r--templates/close.html18
-rw-r--r--templates/content/images/favicon.icobin3638 -> 0 bytes
-rw-r--r--templates/content/js/com.cnprog.i18n.js90
-rw-r--r--templates/content/js/com.cnprog.post.js109
-rw-r--r--templates/content/js/com.cnprog.post.pack.js1
-rw-r--r--templates/content/js/com.cnprog.utils.js22
-rw-r--r--templates/content/js/jquery.i18n.js133
-rw-r--r--templates/content/js/wmd/wmd.js34
-rw-r--r--templates/header.html37
-rw-r--r--templates/index.html44
-rw-r--r--templates/logout.html12
-rw-r--r--templates/privacy.html37
-rw-r--r--templates/question.html165
-rw-r--r--templates/question_edit.html85
-rw-r--r--templates/question_edit_tips.html51
-rw-r--r--templates/reopen.html15
-rw-r--r--templates/revisions_answer.html18
-rw-r--r--templates/revisions_question.html21
-rw-r--r--templates/tags.html18
-rw-r--r--templates/unanswered.html55
-rw-r--r--templates/user.html3
-rw-r--r--templates/user_edit.html19
-rw-r--r--templates/user_favorites.html4
-rw-r--r--templates/user_footer.html3
-rw-r--r--templates/user_info.html34
-rw-r--r--templates/user_recent.html4
-rw-r--r--templates/user_reputation.html3
-rw-r--r--templates/user_responses.html6
-rw-r--r--templates/user_stats.html27
-rw-r--r--templates/user_tabs.html30
-rw-r--r--templates/user_votes.html9
-rw-r--r--templates/users.html22
-rw-r--r--templates/users_questions.html22
65 files changed, 7768 insertions, 1078 deletions
diff --git a/development.log b/development.log
index d8ca27c2..7ad467e0 100644
--- a/development.log
+++ b/development.log
@@ -1 +1,30 @@
-# development log \ No newline at end of file
+# development
+
+==July 26 2009, Evgeny==
+
+django_authopenid:
+considerably changed user interface
+
+log/forum/forms.py:
+- added tag input validation using regex
+- fixed bug with date type mismatch near self.fields['birthday'] =
+ in EditUserForm.__init__()
+
+/forum/templatetags/extra_tags.py:
+- fixed date type mismatch in get_age()
+
+/templates/content/js/com.cnprog.post.js:
+- fixed bug with post deletion/recovery
+
+javascript:
+- changed to use of non-minified code - better for editing
+and debugging
+
+/templates/question.html:
+- fixed display of delete/undelete links
+
+templates:
+added comments in the beginning/end of each template
+for the debugging purposes - so that you know which template outputs what html
+<!-- user_favorites.html -->
+<!-- end user_favorites.html -->
diff --git a/django_authopenid/forms.py b/django_authopenid/forms.py
index 9c519d74..09fa76b1 100644
--- a/django_authopenid/forms.py
+++ b/django_authopenid/forms.py
@@ -155,11 +155,11 @@ class OpenidRegisterForm(forms.Form):
""" test if username is valid and exist in database """
if 'username' in self.cleaned_data:
if not username_re.search(self.cleaned_data['username']):
- raise forms.ValidationError(u"用户名只能包含英文字母、数字和下划线")
+ raise forms.ValidationError(_('invalid user name'))
if self.cleaned_data['username'] in RESERVED_NAMES:
- raise forms.ValidationError(u'对不起,您不能注册该用户名,请换一个试试')
+ raise forms.ValidationError(_('sorry, this name can not be used, please try another'))
if len(self.cleaned_data['username']) < 3:
- raise forms.ValidationError(u'用户名太短,请使用三个或三个以上字符')
+ raise forms.ValidationError(_('username too short'))
try:
user = User.objects.get(
username__exact = self.cleaned_data['username']
@@ -167,8 +167,8 @@ class OpenidRegisterForm(forms.Form):
except User.DoesNotExist:
return self.cleaned_data['username']
except User.MultipleObjectsReturned:
- raise forms.ValidationError(u'该用户名已被注册,请换一个试试')
- raise forms.ValidationError(u'该用户名已被注册,请换个试试')
+ raise forms.ValidationError(_('this name is already in use - please try anoter'))
+ raise forms.ValidationError(_('this name is already in use - please try anoter'))
def clean_email(self):
"""For security reason one unique email in database"""
@@ -250,13 +250,13 @@ class RegistrationForm(forms.Form):
required=False)
username = forms.CharField(max_length=30,
widget=forms.TextInput(attrs=attrs_dict),
- label=u'Username')
+ label=_('choose a username'))
email = forms.EmailField(widget=forms.TextInput(attrs=dict(attrs_dict,
- maxlength=200)), label=u'Email address')
+ maxlength=200)), label=_('your email address'))
password1 = forms.CharField(widget=forms.PasswordInput(attrs=attrs_dict),
- label=u'Password')
+ label=_('choose password'))
password2 = forms.CharField(widget=forms.PasswordInput(attrs=attrs_dict),
- label=u'Password (again, to catch typos)')
+ label=_('retype password'))
def clean_username(self):
"""
diff --git a/forum/const.py b/forum/const.py
index d285de7d..f6649cc4 100644
--- a/forum/const.py
+++ b/forum/const.py
@@ -1,18 +1,19 @@
-# encoding:utf-8
+# encoding:utf-8
+from django.utils.translation import ugettext as _
"""
All constants could be used in other modules
For reasons that models, views can't have unicode text in this project, all unicode text go here.
"""
CLOSE_REASONS = (
- (1, u'完全重复的问题'),
- (2, u'不是编程技术问题'),
- (3, u'太主观性、引起争吵的问题'),
- (4, u'不是一个可以回答的“问题”'),
- (5, u'问题已经解决,已得到正确答案'),
- (6, u'已经过时、不可重现的问题'),
- (7, u'太局部、本地化的问题'),
- (8, u'恶意言论'),
- (9, u'垃圾广告'),
+ (1, _('duplicate question')),
+ (2, _('question if off-topic or not relevant')),
+ (3, _('too subjective and argumentative')),
+ (4, _('is not an answer to the question')),
+ (5, _('the question is answered, right answer was accepted')),
+ (6, _('problem is not reproducible or outdated')),
+ #(7, u'太局部、本地化的问题',)
+ (7, _('question contains offensive inappropriate, or malicious remarks')),
+ (8, _('spam or advertising')),
)
TYPE_REPUTATION = (
@@ -52,38 +53,35 @@ TYPE_ACTIVITY_USER_FULL_UPDATED = 17
#TYPE_ACTIVITY_EDIT_ANSWER=18
TYPE_ACTIVITY = (
- (TYPE_ACTIVITY_ASK_QUESTION, u'提问'),
- (TYPE_ACTIVITY_ANSWER, u'回答'),
- (TYPE_ACTIVITY_COMMENT_QUESTION, u'评论问题'),
- (TYPE_ACTIVITY_COMMENT_ANSWER, u'评论回答'),
- (TYPE_ACTIVITY_UPDATE_QUESTION, u'修改问题'),
- (TYPE_ACTIVITY_UPDATE_ANSWER, u'修改回答'),
- (TYPE_ACTIVITY_PRIZE, u'获奖'),
- (TYPE_ACTIVITY_MARK_ANSWER, u'标记最佳答案'),
- (TYPE_ACTIVITY_VOTE_UP, u'投赞成票'),
- (TYPE_ACTIVITY_VOTE_DOWN, u'投反对票'),
- (TYPE_ACTIVITY_CANCEL_VOTE, u'撤销投票'),
- (TYPE_ACTIVITY_DELETE_QUESTION, u'删除问题'),
- (TYPE_ACTIVITY_DELETE_ANSWER, u'删除回答'),
- (TYPE_ACTIVITY_MARK_OFFENSIVE, u'标记垃圾帖'),
- (TYPE_ACTIVITY_UPDATE_TAGS, u'更新标签'),
- (TYPE_ACTIVITY_FAVORITE, u'收藏'),
- (TYPE_ACTIVITY_USER_FULL_UPDATED, u'完成个人所有资料'),
- #(TYPE_ACTIVITY_EDIT_QUESTION, u'编辑问题'),
- #(TYPE_ACTIVITY_EDIT_ANSWER, u'编辑答案'),
+ (TYPE_ACTIVITY_ASK_QUESTION, _('question')),
+ (TYPE_ACTIVITY_ANSWER, _('answer')),
+ (TYPE_ACTIVITY_COMMENT_QUESTION, _('commented question')),
+ (TYPE_ACTIVITY_COMMENT_ANSWER, _('commented answer')),
+ (TYPE_ACTIVITY_UPDATE_QUESTION, _('edited question')),
+ (TYPE_ACTIVITY_UPDATE_ANSWER, _('edited answer')),
+ (TYPE_ACTIVITY_PRIZE, _('received award')),
+ (TYPE_ACTIVITY_MARK_ANSWER, _('marked best answer')),
+ (TYPE_ACTIVITY_VOTE_UP, _('upvoted')),
+ (TYPE_ACTIVITY_VOTE_DOWN, _('downvoted')),
+ (TYPE_ACTIVITY_CANCEL_VOTE, _('canceled vote')),
+ (TYPE_ACTIVITY_DELETE_QUESTION, _('deleted question')),
+ (TYPE_ACTIVITY_DELETE_ANSWER, _('deleted answer')),
+ (TYPE_ACTIVITY_MARK_OFFENSIVE, _('marked offensive')),
+ (TYPE_ACTIVITY_UPDATE_TAGS, _('updated tags')),
+ (TYPE_ACTIVITY_FAVORITE, _('selected favorite')),
+ (TYPE_ACTIVITY_USER_FULL_UPDATED, _('completed user profile')),
)
TYPE_RESPONSE = {
- 'QUESTION_ANSWERED' : u'回答问题',
- 'QUESTION_COMMENTED': u'问题评论',
- 'ANSWER_COMMENTED' : u'回答评论',
- 'ANSWER_ACCEPTED' : u'最佳答案',
+ 'QUESTION_ANSWERED' : 'question_answered',
+ 'QUESTION_COMMENTED': 'question_commented',
+ 'ANSWER_COMMENTED' : 'answer_commented',
+ 'ANSWER_ACCEPTED' : 'answer_accepted',
}
CONST = {
- 'closed' : u' [已关闭]',
- 'deleted' : u' [已删除]',
- 'default_version' : u'初始版本',
- 'retagged' : u'更新了标签',
-
+ 'closed' : _('[closed]'),
+ 'deleted' : _('[deleted]'),
+ 'default_version' : _('initial version'),
+ 'retagged' : _('retagged'),
}
diff --git a/forum/feed.py b/forum/feed.py
index d75f3be6..a4218630 100644
--- a/forum/feed.py
+++ b/forum/feed.py
@@ -11,13 +11,15 @@
# Licence: GPL V2
#-------------------------------------------------------------------------------
from django.contrib.syndication.feeds import Feed, FeedDoesNotExist
+from django.utils.translation import ugettext as _
from models import Question
class RssLastestQuestionsFeed(Feed):
- title = u"CNProg程序员问答社区-最新问题"
- link = u"http://www.cnprog.com/questions/"
- description = u"中国程序员的编程技术问答社区。我们做专业的、可协作编辑的技术问答社区。"
+ title = _('site title') + _(' - ') + _('site slogan') + _(' - ')+ _('latest questions')
+ #EDIT!!!
+ link = 'http://where.com/questions/'
+ description = _('meta site content')
#ttl = 10
- copyright = u'Copyright(c)2009.CNPROG.COM'
+ copyright = _('copyright message')
def item_link(self, item):
return '/questions/%s/' % item.id
@@ -38,4 +40,4 @@ def main():
pass
if __name__ == '__main__':
- main() \ No newline at end of file
+ main()
diff --git a/forum/forms.py b/forum/forms.py
index 70a44f28..1b811ad9 100644
--- a/forum/forms.py
+++ b/forum/forms.py
@@ -1,8 +1,9 @@
-import re
+import re
from datetime import date
from django import forms
from models import *
from const import *
+from django.utils.translation import ugettext as _
class TitleField(forms.CharField):
def __init__(self, *args, **kwargs):
@@ -10,13 +11,13 @@ class TitleField(forms.CharField):
self.required = True
self.widget = forms.TextInput(attrs={'size' : 70, 'autocomplete' : 'off'})
self.max_length = 255
- self.label = u'标题'
- self.help_text = u'请输入对问题具有描述性质的标题 - “帮忙!紧急求助!”不是建议的提问方式。'
+ self.label = _('title')
+ self.help_text = _('please enter a descriptive title for your question')
self.initial = ''
def clean(self, value):
if len(value) < 10:
- raise forms.ValidationError(u"标题的长度必须大于10")
+ raise forms.ValidationError(_('title must be > 10 characters'))
return value
@@ -25,13 +26,13 @@ class EditorField(forms.CharField):
super(EditorField, self).__init__(*args, **kwargs)
self.required = True
self.widget = forms.Textarea(attrs={'id':'editor'})
- self.label = u'内容'
+ self.label = _('content')
self.help_text = u''
self.initial = ''
def clean(self, value):
if len(value) < 10:
- raise forms.ValidationError(u"内容至少要10个字符")
+ raise forms.ValidationError(_('question content must be > 10 characters'))
return value
@@ -41,39 +42,37 @@ class TagNamesField(forms.CharField):
self.required = True
self.widget = forms.TextInput(attrs={'size' : 50, 'autocomplete' : 'off'})
self.max_length = 255
- self.label = u'标签'
- self.help_text = u'多个标签请用空格间隔-最多5个标签。(优先使用自动匹配的英文标签。)'
+ self.label = _('tags')
+ self.help_text = _('please use space to separate tags (this enables autocomplete feature)')
self.initial = ''
- def clean(self, value):
- value = super(TagNamesField, self).clean(value)
- data = value.strip()
- if len(data) < 1:
- raise forms.ValidationError(u'标签不能为空')
- list = data.split(' ')
- list_temp = []
- if len(list) > 5:
- raise forms.ValidationError(u'最多只能有5个标签')
- for tag in list:
- if len(tag) > 20:
- raise forms.ValidationError(u'每个标签的长度不超过20')
-
- #TODO: regex match not allowed characters here
-
- if tag.find('/') > -1 or tag.find('\\') > -1 or tag.find('<') > -1 or tag.find('>') > -1 or tag.find('&') > -1 or tag.find('\'') > -1 or tag.find('"') > -1:
- #if not tagname_re.match(tag):
- raise forms.ValidationError(u'标签请使用英文字母,中文或者数字字符串(. - _ # 也可以)')
- # only keep one same tag
- if tag not in list_temp and len(tag.strip()) > 0:
- list_temp.append(tag)
- return u' '.join(list_temp)
+ def clean(self, value):
+ value = super(TagNamesField, self).clean(value)
+ data = value.strip()
+ if len(data) < 1:
+ raise forms.ValidationError(_('tags are required'))
+ list = data.split(' ')
+ list_temp = []
+ if len(list) > 5:
+ raise forms.ValidationError(_('please use 5 tags or less'))
+ for tag in list:
+ if len(tag) > 20:
+ raise forms.ValidationError(_('tags must be shorter than 20 characters'))
+ #take tag regex from settings
+ tagname_re = re.compile(r'[a-z0-9]+')
+ if not tagname_re.match(tag):
+ raise forms.ValidationError(_('please use following characters in tags: letters \'a-z\', numbers, and characters \'.-_#\''))
+ # only keep one same tag
+ if tag not in list_temp and len(tag.strip()) > 0:
+ list_temp.append(tag)
+ return u' '.join(list_temp)
class WikiField(forms.BooleanField):
def __init__(self, *args, **kwargs):
super(WikiField, self).__init__(*args, **kwargs)
self.required = False
- self.label = u'社区wiki模式'
- self.help_text = u'选择社区wiki模式,问答不计算积分,签名也不显示作者信息'
+ self.label = _('community wiki')
+ self.help_text = _('if you choose community wiki option, the question and answer do not generate points and name of author will not be shown')
class SummaryField(forms.CharField):
@@ -82,8 +81,8 @@ class SummaryField(forms.CharField):
self.required = False
self.widget = forms.TextInput(attrs={'size' : 50, 'autocomplete' : 'off'})
self.max_length = 300
- self.label = u'更新概要:'
- self.help_text = u'输入本次修改的简单概述(如:修改了别字,修正了语法,改进了样式等。非必填项。)'
+ self.label = _('update summary:')
+ self.help_text = _('enter a brief summary of your revision (e.g. fixed spelling, grammar, improved style, this field is optional)')
class AskForm(forms.Form):
title = TitleField()
@@ -158,12 +157,12 @@ class EditAnswerForm(forms.Form):
self.fields['text'].initial = revision.text
class EditUserForm(forms.Form):
- email = forms.EmailField(label=u'Email', help_text=u'不会公开,用于头像显示服务', required=False, max_length=255, widget=forms.TextInput(attrs={'size' : 35}))
- realname = forms.CharField(label=u'真实姓名', required=False, max_length=255, widget=forms.TextInput(attrs={'size' : 35}))
- website = forms.URLField(label=u'个人网站', required=False, max_length=255, widget=forms.TextInput(attrs={'size' : 35}))
- city = forms.CharField(label=u'城市', required=False, max_length=255, widget=forms.TextInput(attrs={'size' : 35}))
- birthday = forms.DateField(label=u'生日', help_text=u'不会公开,只会显示您的年龄,格式为:YYYY-MM-DD', required=True, widget=forms.TextInput(attrs={'size' : 35}))
- about = forms.CharField(label=u'个人简介', required=False, widget=forms.Textarea(attrs={'cols' : 60}))
+ email = forms.EmailField(label=u'Email', help_text=_('this email does not have to be linked to gravatar'), required=False, max_length=255, widget=forms.TextInput(attrs={'size' : 35}))
+ realname = forms.CharField(label=_('Real name'), required=False, max_length=255, widget=forms.TextInput(attrs={'size' : 35}))
+ website = forms.URLField(label=_('Website'), required=False, max_length=255, widget=forms.TextInput(attrs={'size' : 35}))
+ city = forms.CharField(label=_('Location'), required=False, max_length=255, widget=forms.TextInput(attrs={'size' : 35}))
+ birthday = forms.DateField(label=_('Date of birth'), help_text=_('will not be shown, used to calculate age, format: YYYY-MM-DD'), required=False, widget=forms.TextInput(attrs={'size' : 35}))
+ about = forms.CharField(label=_('Profile'), required=False, widget=forms.Textarea(attrs={'cols' : 60}))
def __init__(self, user, *args, **kwargs):
super(EditUserForm, self).__init__(*args, **kwargs)
@@ -173,7 +172,7 @@ class EditUserForm(forms.Form):
self.fields['city'].initial = user.location
if user.date_of_birth is not None:
- self.fields['birthday'].initial = user.date_of_birth.date()
+ self.fields['birthday'].initial = user.date_of_birth
else:
self.fields['birthday'].initial = '1990-01-01'
self.fields['about'].initial = user.about
@@ -188,7 +187,7 @@ class EditUserForm(forms.Form):
except User.DoesNotExist:
return self.cleaned_data['email']
except User.MultipleObjectsReturned:
- raise forms.ValidationError(u'该电子邮件已被注册,请选择另一个再试。')
- raise forms.ValidationError("该电子邮件帐号已被注册,请选择另一个再试。")
+ raise forms.ValidationError(_('this email has already been registered, please use another one'))
+ raise forms.ValidationError(_('this email has already been registered, please use another one'))
else:
- return self.cleaned_data['email'] \ No newline at end of file
+ return self.cleaned_data['email']
diff --git a/forum/models.py b/forum/models.py
index 290c9d56..570db274 100644
--- a/forum/models.py
+++ b/forum/models.py
@@ -10,6 +10,7 @@ from django.contrib.contenttypes import generic
from django.contrib.contenttypes.models import ContentType
from django.template.defaultfilters import slugify
from django.db.models.signals import post_delete, post_save, pre_save
+from django.utils.translation import ugettext as _
import django.dispatch
from forum.managers import *
@@ -312,9 +313,9 @@ class Badge(models.Model):
SILVER = 2
BRONZE = 3
TYPE_CHOICES = (
- (GOLD, u'金牌'),
- (SILVER, u'银牌'),
- (BRONZE, u'铜牌'),
+ (GOLD, _('gold')),
+ (SILVER, _('silver')),
+ (BRONZE, _('bronze')),
)
name = models.CharField(max_length=50)
@@ -650,4 +651,4 @@ mark_offensive.connect(record_mark_offensive, sender=Question)
mark_offensive.connect(record_mark_offensive, sender=Answer)
tags_updated.connect(record_update_tags, sender=Question)
post_save.connect(record_favorite_question, sender=FavoriteQuestion)
-user_updated.connect(record_user_full_updated, sender=User) \ No newline at end of file
+user_updated.connect(record_user_full_updated, sender=User)
diff --git a/forum/templatetags/extra_tags.py b/forum/templatetags/extra_tags.py
index 7c53c2cb..1a4d3641 100644
--- a/forum/templatetags/extra_tags.py
+++ b/forum/templatetags/extra_tags.py
@@ -8,6 +8,7 @@ from django.utils.encoding import smart_unicode
from django.utils.safestring import mark_safe
from django.utils.timesince import timesince
from forum.const import *
+from django.utils.translation import ugettext as _
register = template.Library()
@@ -110,23 +111,23 @@ def cnprog_pagesize(context):
"pagesize" : context["pagesize"],
"is_paginated": context["is_paginated"]
}
-
+
@register.simple_tag
def get_score_badge(user):
- BADGE_TEMPLATE = '<span class="score" title="%(reputation)s用户积分">%(reputation)s</span>'
+ BADGE_TEMPLATE = '<span class="score" title="%(reputation)s %(reputationword)s">%(reputation)s</span>'
if user.gold > 0 :
- BADGE_TEMPLATE = '%s%s' % (BADGE_TEMPLATE, ' <span title="%(gold)s枚金牌">'
- '<span class="badge1">●</span>'
+ BADGE_TEMPLATE = '%s%s' % (BADGE_TEMPLATE, '<span title="%(gold)s %(badgesword)s">'
+ '<span class="badge1">&#9679;</span>'
'<span class="badgecount">%(gold)s</span>'
'</span>')
if user.silver > 0:
- BADGE_TEMPLATE = '%s%s' % (BADGE_TEMPLATE, ' <span title="%(silver)s枚银牌">'
- '<span class="silver">●</span>'
+ BADGE_TEMPLATE = '%s%s' % (BADGE_TEMPLATE, '<span title="%(silver)s %(badgesword)s">'
+ '<span class="silver">&#9679;</span>'
'<span class="badgecount">%(silver)s</span>'
'</span>')
if user.bronze > 0:
- BADGE_TEMPLATE = '%s%s' % (BADGE_TEMPLATE, ' <span title="%(bronze)s枚铜牌">'
- '<span class="bronze">●</span>'
+ BADGE_TEMPLATE = '%s%s' % (BADGE_TEMPLATE, '<span title="%(bronze)s %(badgesword)s">'
+ '<span class="bronze">&#9679;</span>'
'<span class="badgecount">%(bronze)s</span>'
'</span>')
BADGE_TEMPLATE = smart_unicode(BADGE_TEMPLATE, encoding='utf-8', strings_only=False, errors='strict')
@@ -135,24 +136,26 @@ def get_score_badge(user):
'gold' : user.gold,
'silver' : user.silver,
'bronze' : user.bronze,
+ 'badgesword' : _('badges'),
+ 'reputationword' : _('reputation points'),
})
-
+
@register.simple_tag
def get_score_badge_by_details(rep, gold, silver, bronze):
- BADGE_TEMPLATE = '<span class="reputation-score" title="%(reputation)s用户积分">%(reputation)s</span>'
+ BADGE_TEMPLATE = '<span class="reputation-score" title="%(reputation)s %(repword)s">%(reputation)s</span>'
if gold > 0 :
- BADGE_TEMPLATE = '%s%s' % (BADGE_TEMPLATE, '<span title="%(gold)s枚金牌">'
- '<span class="badge1">●</span>'
+ BADGE_TEMPLATE = '%s%s' % (BADGE_TEMPLATE, '<span title="%(gold)s %(badgeword)s">'
+ '<span class="badge1">&#9679;</span>'
'<span class="badgecount">%(gold)s</span>'
'</span>')
if silver > 0:
- BADGE_TEMPLATE = '%s%s' % (BADGE_TEMPLATE, '<span title="%(silver)s枚银牌">'
- '<span class="badge2">●</span>'
+ BADGE_TEMPLATE = '%s%s' % (BADGE_TEMPLATE, '<span title="%(silver)s %(badgeword)s">'
+ '<span class="badge2">&#9679;</span>'
'<span class="badgecount">%(silver)s</span>'
'</span>')
if bronze > 0:
- BADGE_TEMPLATE = '%s%s' % (BADGE_TEMPLATE, '<span title="%(bronze)s枚铜牌">'
- '<span class="badge3">●</span>'
+ BADGE_TEMPLATE = '%s%s' % (BADGE_TEMPLATE, '<span title="%(bronze)s %(badgeword)s">'
+ '<span class="badge3">&#9679;</span>'
'<span class="badgecount">%(bronze)s</span>'
'</span>')
BADGE_TEMPLATE = smart_unicode(BADGE_TEMPLATE, encoding='utf-8', strings_only=False, errors='strict')
@@ -161,19 +164,24 @@ def get_score_badge_by_details(rep, gold, silver, bronze):
'gold' : gold,
'silver' : silver,
'bronze' : bronze,
- })
-
+ 'repword' : _('reputation points'),
+ 'badgeword' : _('badges'),
+ })
+
@register.simple_tag
def get_user_vote_image(dic, key, arrow):
if dic.has_key(key):
if int(dic[key]) == int(arrow):
return '-on'
return ''
-
+
@register.simple_tag
def get_age(birthday):
current_time = datetime.datetime(*time.localtime()[0:6])
- diff = current_time - birthday
+ year = birthday.year
+ month = birthday.month
+ day = birthday.day
+ diff = current_time - datetime.datetime(year,month,day,0,0,0)
return diff.days / 365
@register.simple_tag
@@ -210,8 +218,8 @@ def diff_date(date, limen=2):
if diff_days > limen:
return date
else:
- return timesince(date) + u'前'
-
+ return timesince(date) + _(' ago')
+
@register.simple_tag
def get_latest_changed_timestamp():
try:
diff --git a/forum/user.py b/forum/user.py
index 2461e073..233baf0c 100644
--- a/forum/user.py
+++ b/forum/user.py
@@ -14,61 +14,61 @@ class UserView:
USER_TEMPLATE_VIEWS = (
UserView(
id = 'stats',
- tab_title = _("Overview"),
- tab_description = _('User overview'),
- page_title = _('Overview - User Profile'),
+ tab_title = _('overview'),
+ tab_description = _('user profile'),
+ page_title = _('user profile overview'),
view_name = 'user_stats',
template_file = 'user_stats.html'
),
UserView(
id = 'recent',
- tab_title = _('Recent'),
- tab_description = _("Recent activities"),
- page_title = _('Recent - User Profile'),
+ tab_title = _('recent activity'),
+ tab_description = _('recent user activity'),
+ page_title = _('profile - recent activity'),
view_name = 'user_recent',
template_file = 'user_recent.html',
data_size = 50
),
UserView(
id = 'responses',
- tab_title = _("Response"),
- tab_description = _("Responses from others"),
- page_title = _("Response - User Profile"),
+ tab_title = _('responses'),
+ tab_description = _('comments and answers to others questions'),
+ page_title = _('profile - responses'),
view_name = 'user_responses',
template_file = 'user_responses.html',
data_size = 50
),
UserView(
id = 'reputation',
- tab_title = _("Reputation"),
- tab_description = _("Community reputation"),
- page_title = _("Reputation - User Profile"),
+ tab_title = _('reputation'),
+ tab_description = _('user reputation in the community'),
+ page_title = _('profile - user reputation'),
view_name = 'user_reputation',
template_file = 'user_reputation.html'
),
UserView(
id = 'favorites',
- tab_title = _("Favorites"),
- tab_description = _("User's favorite questions"),
- page_title = _("Favorites - User Profile"),
+ tab_title = _('favorite questions'),
+ tab_description = _('users favorite questions'),
+ page_title = _('profile - favorite questions'),
view_name = 'user_favorites',
template_file = 'user_favorites.html',
data_size = 50
),
UserView(
id = 'votes',
- tab_title = _("Votes"),
- tab_description = _("Votes history"),
- page_title = _("Votes - User Profile"),
+ tab_title = _('casted votes'),
+ tab_description = _('user vote record'),
+ page_title = _('profile - votes'),
view_name = 'user_votes',
template_file = 'user_votes.html',
data_size = 50
),
UserView(
id = 'preferences',
- tab_title = _("Preferences"),
- tab_description = _("User preferences"),
- page_title = _("Preferences - User Profile"),
+ tab_title = _('preferences'),
+ tab_description = _('user preference settings'),
+ page_title = _('profile - user preferences'),
view_name = 'user_preferences',
template_file = 'user_preferences.html'
)
diff --git a/forum/views.py b/forum/views.py
index 8252304e..08a0e958 100644
--- a/forum/views.py
+++ b/forum/views.py
@@ -15,6 +15,7 @@ from django.utils import simplejson
from django.core import serializers
from django.db import transaction
from django.contrib.contenttypes.models import ContentType
+from django.utils.translation import ugettext as _
from utils.html import sanitize_html
from markdown2 import Markdown
@@ -1722,13 +1723,13 @@ def upload(request):
result = xml_template % ('Good', '', default_storage.url(new_file_name))
except UploadPermissionNotAuthorized:
- result = xml_template % ('', u"上传图片只限于积分+60以上注册用户!", '')
+ result = xml_template % ('', _('uploading images is limited to users with >60 reputation points'), '')
except FileTypeNotAllow:
- result = xml_template % ('', u"只允许上传'jpg', 'jpeg', 'gif', 'bmp', 'png', 'tiff'类型的文件!", '')
+ result = xml_template % ('', _("allowed file types are 'jpg', 'jpeg', 'gif', 'bmp', 'png', 'tiff'"), '')
except FileSizeNotAllow:
- result = xml_template % ('', u"只允许上传%sK大小的文件!" % settings.ALLOW_MAX_FILE_SIZE / 1024, '')
- except Exception:
- result = xml_template % ('', u"在文件上传过程中产生了错误,请联系管理员,谢谢^_^", '')
+ result = xml_template % ('', _("maximum upload file size is %sK") % settings.ALLOW_MAX_FILE_SIZE / 1024, '')
+ except Exception as e:
+ result = xml_template % ('', _('Error uploading file. Please contact the site administrator. Thank you. %s' % e), '')
return HttpResponse(result, mimetype="application/xml")
diff --git a/locale/en/LC_MESSAGES/django.mo b/locale/en/LC_MESSAGES/django.mo
new file mode 100644
index 00000000..8c359972
--- /dev/null
+++ b/locale/en/LC_MESSAGES/django.mo
Binary files differ
diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po
new file mode 100644
index 00000000..93cfdfe4
--- /dev/null
+++ b/locale/en/LC_MESSAGES/django.po
@@ -0,0 +1,1973 @@
+# 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: 2009-07-28 15:57+0000\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"
+
+#: settings.py:12
+msgid "account/"
+msgstr ""
+
+#: settings.py:12 django_authopenid/urls.py:9 django_authopenid/urls.py:11
+msgid "signin/"
+msgstr ""
+
+#: django_authopenid/forms.py:67 django_authopenid/views.py:93
+msgid "i-names are not supported"
+msgstr ""
+
+#: django_authopenid/forms.py:102 django_authopenid/forms.py:207
+msgid ""
+"Usernames can only contain letters, numbers and "
+"underscores"
+msgstr ""
+
+#: django_authopenid/forms.py:109
+msgid ""
+"This username does not exist in our database. Please "
+"choose another."
+msgstr ""
+
+#: django_authopenid/forms.py:126 django_authopenid/forms.py:231
+msgid ""
+"Please enter a valid username and password. Note that "
+"both fields are case-sensitive."
+msgstr ""
+
+#: django_authopenid/forms.py:130 django_authopenid/forms.py:235
+msgid "This account is inactive."
+msgstr ""
+
+#: django_authopenid/forms.py:158
+msgid "invalid user name"
+msgstr ""
+
+#: django_authopenid/forms.py:160
+msgid "sorry, this name can not be used, please try another"
+msgstr ""
+
+#: django_authopenid/forms.py:162
+msgid "username too short"
+msgstr ""
+
+#: django_authopenid/forms.py:170 django_authopenid/forms.py:171
+msgid "this name is already in use - please try anoter"
+msgstr ""
+
+#: django_authopenid/forms.py:184
+msgid ""
+"This email is already registered in our database. Please "
+"choose another."
+msgstr ""
+
+#: django_authopenid/forms.py:214
+msgid ""
+"This username don't exist. Please choose another."
+msgstr ""
+
+#: django_authopenid/forms.py:253
+msgid "choose a username"
+msgstr ""
+
+#: django_authopenid/forms.py:255 templates/authopenid/signup.html:36
+msgid "your email address"
+msgstr ""
+
+#: django_authopenid/forms.py:257 templates/authopenid/signup.html:37
+msgid "choose password"
+msgstr ""
+
+#: django_authopenid/forms.py:259 templates/authopenid/signup.html:38
+msgid "retype password"
+msgstr ""
+
+#: django_authopenid/forms.py:330
+msgid ""
+"Old password is incorrect. Please enter the correct "
+"password."
+msgstr ""
+
+#: django_authopenid/forms.py:342
+msgid "new passwords do not match"
+msgstr ""
+
+#: django_authopenid/forms.py:434
+msgid "Incorrect username."
+msgstr ""
+
+#: django_authopenid/urls.py:10
+msgid "signout/"
+msgstr ""
+
+#: django_authopenid/urls.py:11
+msgid "complete/"
+msgstr ""
+
+#: django_authopenid/urls.py:13
+msgid "register/"
+msgstr ""
+
+#: django_authopenid/urls.py:14
+msgid "signup/"
+msgstr ""
+
+#: django_authopenid/urls.py:16
+msgid "sendpw/"
+msgstr ""
+
+#: django_authopenid/urls.py:26
+msgid "delete/"
+msgstr ""
+
+#: django_authopenid/views.py:99
+#, python-format
+msgid "非法OpenID地址: %s"
+msgstr ""
+
+#: django_authopenid/views.py:366
+msgid "Welcome"
+msgstr ""
+
+#: django_authopenid/views.py:456
+msgid "Password changed."
+msgstr ""
+
+#: django_authopenid/views.py:488
+msgid "Email changed."
+msgstr ""
+
+#: django_authopenid/views.py:519 django_authopenid/views.py:671
+#, python-format
+msgid "No OpenID %s found associated in our database"
+msgstr ""
+
+#: django_authopenid/views.py:523 django_authopenid/views.py:678
+#, python-format
+msgid "The OpenID %s isn't associated to current user logged in"
+msgstr ""
+
+#: django_authopenid/views.py:531
+msgid "Email Changed."
+msgstr ""
+
+#: django_authopenid/views.py:606
+msgid "This OpenID is already associated with another account."
+msgstr ""
+
+#: django_authopenid/views.py:611
+#, python-format
+msgid "OpenID %s is now associated with your account."
+msgstr ""
+
+#: django_authopenid/views.py:681
+msgid "Account deleted."
+msgstr ""
+
+#: django_authopenid/views.py:721
+msgid "Request for new password"
+msgstr ""
+
+#: django_authopenid/views.py:734
+msgid "A new password has been sent to your email address."
+msgstr ""
+
+#: django_authopenid/views.py:764
+#, python-format
+msgid ""
+"Could not change password. Confirmation key '%s' is not "
+"registered."
+msgstr ""
+
+#: django_authopenid/views.py:773
+msgid ""
+"Can not change password. User don't exist anymore in our "
+"database."
+msgstr ""
+
+#: django_authopenid/views.py:782
+#, python-format
+msgid "Password changed for %s. You may now sign in."
+msgstr ""
+
+#: forum/const.py:8
+msgid "duplicate question"
+msgstr ""
+
+#: forum/const.py:9
+msgid "question if off-topic or not relevant"
+msgstr ""
+
+#: forum/const.py:10
+msgid "too subjective and argumentative"
+msgstr ""
+
+#: forum/const.py:11
+msgid "is not an answer to the question"
+msgstr ""
+
+#: forum/const.py:12
+msgid "the question is answered, right answer was accepted"
+msgstr ""
+
+#: forum/const.py:13
+msgid "problem is not reproducible or outdated"
+msgstr ""
+
+#: forum/const.py:15
+msgid "question contains offensive inappropriate, or malicious remarks"
+msgstr ""
+
+#: forum/const.py:16
+msgid "spam or advertising"
+msgstr ""
+
+#: forum/const.py:56
+msgid "question"
+msgstr ""
+
+#: forum/const.py:57 templates/book.html:110
+msgid "answer"
+msgstr ""
+
+#: forum/const.py:58
+msgid "commented question"
+msgstr ""
+
+#: forum/const.py:59
+msgid "commented answer"
+msgstr ""
+
+#: forum/const.py:60
+msgid "edited question"
+msgstr ""
+
+#: forum/const.py:61
+msgid "edited answer"
+msgstr ""
+
+#: forum/const.py:62
+msgid "received award"
+msgstr ""
+
+#: forum/const.py:63
+msgid "marked best answer"
+msgstr ""
+
+#: forum/const.py:64
+msgid "upvoted"
+msgstr ""
+
+#: forum/const.py:65
+msgid "downvoted"
+msgstr ""
+
+#: forum/const.py:66
+msgid "canceled vote"
+msgstr ""
+
+#: forum/const.py:67
+msgid "deleted question"
+msgstr ""
+
+#: forum/const.py:68
+msgid "deleted answer"
+msgstr ""
+
+#: forum/const.py:69
+msgid "marked offensive"
+msgstr ""
+
+#: forum/const.py:70
+msgid "updated tags"
+msgstr ""
+
+#: forum/const.py:71
+msgid "selected favorite"
+msgstr ""
+
+#: forum/const.py:72
+msgid "completed user profile"
+msgstr ""
+
+#: forum/const.py:83
+msgid "[closed]"
+msgstr ""
+
+#: forum/const.py:84
+msgid "[deleted]"
+msgstr ""
+
+#: forum/const.py:85
+msgid "initial version"
+msgstr ""
+
+#: forum/const.py:86
+msgid "retagged"
+msgstr ""
+
+#: forum/feed.py:17
+msgid "site title"
+msgstr ""
+
+#: forum/feed.py:17
+msgid " - "
+msgstr ""
+
+#: forum/feed.py:17
+msgid "site slogan"
+msgstr ""
+
+#: forum/feed.py:17
+msgid "latest questions"
+msgstr ""
+
+#: forum/feed.py:20
+msgid "meta site content"
+msgstr ""
+
+#: forum/feed.py:22
+msgid "copyright message"
+msgstr ""
+
+#: forum/forms.py:14 templates/question_edit_tips.html:31
+#: templates/question_edit_tips.html:36
+msgid "title"
+msgstr ""
+
+#: forum/forms.py:15
+msgid "please enter a descriptive title for your question"
+msgstr ""
+
+#: forum/forms.py:20
+msgid "title must be > 10 characters"
+msgstr ""
+
+#: forum/forms.py:29
+msgid "content"
+msgstr ""
+
+#: forum/forms.py:35
+msgid "question content must be > 10 characters"
+msgstr ""
+
+#: forum/forms.py:45 templates/header.html:30 templates/header.html.py:61
+msgid "tags"
+msgstr ""
+
+#: forum/forms.py:46
+msgid "please use space to separate tags (this enables autocomplete feature)"
+msgstr ""
+
+#: forum/forms.py:53
+msgid "tags are required"
+msgstr ""
+
+#: forum/forms.py:57
+msgid "please use 5 tags or less"
+msgstr ""
+
+#: forum/forms.py:60
+msgid "tags must be shorter than 20 characters"
+msgstr ""
+
+#: forum/forms.py:64
+msgid ""
+"please use following characters in tags: letters 'a-z', numbers, and "
+"characters '.-_#'"
+msgstr ""
+
+#: forum/forms.py:74 templates/index.html:56 templates/question.html:196
+#: templates/question.html.py:377 templates/unanswered.html:48
+#: templates/unanswered.html.py:60
+msgid "community wiki"
+msgstr ""
+
+#: forum/forms.py:75
+msgid ""
+"if you choose community wiki option, the question and answer do not generate "
+"points and name of author will not be shown"
+msgstr ""
+
+#: forum/forms.py:84
+msgid "update summary:"
+msgstr ""
+
+#: forum/forms.py:85
+msgid ""
+"enter a brief summary of your revision (e.g. fixed spelling, grammar, "
+"improved style, this field is optional)"
+msgstr ""
+
+#: forum/forms.py:160
+msgid "this email does not have to be linked to gravatar"
+msgstr ""
+
+#: forum/forms.py:161
+msgid "Real name"
+msgstr ""
+
+#: forum/forms.py:162
+msgid "Website"
+msgstr ""
+
+#: forum/forms.py:163
+msgid "Location"
+msgstr ""
+
+#: forum/forms.py:164
+msgid "Date of birth"
+msgstr ""
+
+#: forum/forms.py:164
+msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
+msgstr ""
+
+#: forum/forms.py:165 templates/authopenid/settings.html:20
+msgid "Profile"
+msgstr ""
+
+#: forum/forms.py:190 forum/forms.py:191
+msgid "this email has already been registered, please use another one"
+msgstr ""
+
+#: forum/models.py:316 templates/badges.html:50
+msgid "gold"
+msgstr ""
+
+#: forum/models.py:317 templates/badges.html:58
+msgid "silver"
+msgstr ""
+
+#: forum/models.py:318 templates/badges.html:65
+msgid "bronze"
+msgstr ""
+
+#: forum/user.py:17 templates/user_tabs.html:7
+msgid "overview"
+msgstr ""
+
+#: forum/user.py:18
+msgid "user profile"
+msgstr ""
+
+#: forum/user.py:19
+msgid "user profile overview"
+msgstr ""
+
+#: forum/user.py:25 templates/user_tabs.html:9
+msgid "recent activity"
+msgstr ""
+
+#: forum/user.py:26
+msgid "recent user activity"
+msgstr ""
+
+#: forum/user.py:27
+msgid "profile - recent activity"
+msgstr ""
+
+#: forum/user.py:34 templates/user_tabs.html:13
+msgid "responses"
+msgstr ""
+
+#: forum/user.py:35 templates/user_tabs.html:12
+msgid "comments and answers to others questions"
+msgstr ""
+
+#: forum/user.py:36
+msgid "profile - responses"
+msgstr ""
+
+#: forum/user.py:43 templates/user_info.html:23 templates/users.html:25
+msgid "reputation"
+msgstr ""
+
+#: forum/user.py:44
+msgid "user reputation in the community"
+msgstr ""
+
+#: forum/user.py:45
+msgid "profile - user reputation"
+msgstr ""
+
+#: forum/user.py:51
+msgid "favorite questions"
+msgstr ""
+
+#: forum/user.py:52
+msgid "users favorite questions"
+msgstr ""
+
+#: forum/user.py:53
+msgid "profile - favorite questions"
+msgstr ""
+
+#: forum/user.py:60 templates/user_tabs.html:20
+msgid "casted votes"
+msgstr ""
+
+#: forum/user.py:61 templates/user_tabs.html:20
+msgid "user vote record"
+msgstr ""
+
+#: forum/user.py:62
+msgid "profile - votes"
+msgstr ""
+
+#: forum/user.py:69
+msgid "preferences"
+msgstr ""
+
+#: forum/user.py:70 templates/user_tabs.html:28
+msgid "user preference settings"
+msgstr ""
+
+#: forum/user.py:71
+msgid "profile - user preferences"
+msgstr ""
+
+#: forum/views.py:1726
+msgid "uploading images is limited to users with >60 reputation points"
+msgstr ""
+
+#: forum/views.py:1728
+msgid "allowed file types are 'jpg', 'jpeg', 'gif', 'bmp', 'png', 'tiff'"
+msgstr ""
+
+#: forum/views.py:1730
+#, python-format
+msgid "maximum upload file size is %sK"
+msgstr ""
+
+#: forum/views.py:1732
+#, python-format
+msgid ""
+"Error uploading file. Please contact the site administrator. Thank you. %s"
+msgstr ""
+
+#: forum/templatetags/extra_tags.py:139 forum/templatetags/extra_tags.py:168
+#: templates/header.html:33
+msgid "badges"
+msgstr ""
+
+#: forum/templatetags/extra_tags.py:140 forum/templatetags/extra_tags.py:167
+msgid "reputation points"
+msgstr ""
+
+#: forum/templatetags/extra_tags.py:221
+msgid " ago"
+msgstr ""
+
+#: templates/404.html:24
+msgid "Sorry, could not find the page you requested."
+msgstr ""
+
+#: templates/404.html:26
+msgid "This might have happened for the following reasons:"
+msgstr ""
+
+#: templates/404.html:28
+msgid "this question or answer has been deleted;"
+msgstr ""
+
+#: templates/404.html:29
+msgid "url has error - please check it;"
+msgstr ""
+
+#: templates/404.html:30
+msgid ""
+"the page you tried to visit is protected or you don't have sufficient "
+"points, see"
+msgstr ""
+
+#: templates/404.html:31
+msgid "if you believe this error 404 should not have occured, please"
+msgstr ""
+
+#: templates/404.html:32
+msgid "report this problem"
+msgstr ""
+
+#: templates/404.html:41 templates/500.html:27
+msgid "back to previous page"
+msgstr ""
+
+#: templates/404.html:42
+msgid "see all questions"
+msgstr ""
+
+#: templates/404.html:43
+msgid "see all tags"
+msgstr ""
+
+#: templates/500.html:24
+msgid "system error log is recorded, error will be fixed as soon as possible"
+msgstr ""
+
+#: templates/500.html:25
+msgid "please report the error to the site administrators if you wish"
+msgstr ""
+
+#: templates/500.html:28
+msgid "see latest questions"
+msgstr ""
+
+#: templates/500.html:29
+msgid "see tags"
+msgstr ""
+
+#: templates/answer_edit.html:4 templates/answer_edit.html.py:47
+msgid "Edit answer"
+msgstr ""
+
+#: templates/answer_edit.html:24 templates/answer_edit.html.py:27
+#: templates/ask.html:25 templates/ask.html.py:28 templates/question.html:37
+#: templates/question.html.py:40 templates/question_edit.html:27
+msgid "hide preview"
+msgstr ""
+
+#: templates/answer_edit.html:27 templates/ask.html:28
+#: templates/question.html:40 templates/question_edit.html:27
+msgid "show preview"
+msgstr ""
+
+#: templates/answer_edit.html:47 templates/question_edit.html:65
+#: templates/revisions_answer.html:36 templates/revisions_question.html:36
+msgid "back"
+msgstr ""
+
+#: templates/answer_edit.html:52 templates/question_edit.html:70
+#: templates/revisions_answer.html:47 templates/revisions_question.html:47
+msgid "revision"
+msgstr ""
+
+#: templates/answer_edit.html:55 templates/question_edit.html:74
+msgid "select revision"
+msgstr ""
+
+#: templates/answer_edit.html:62 templates/ask.html:81
+#: templates/question.html:447 templates/question_edit.html:91
+msgid "Toggle the real time Markdown editor preview"
+msgstr ""
+
+#: templates/answer_edit.html:62 templates/ask.html:81
+#: templates/question.html:447 templates/question_edit.html:91
+msgid "toggle preview"
+msgstr ""
+
+#: templates/answer_edit.html:73 templates/question_edit.html:119
+msgid "Save edit"
+msgstr ""
+
+#: templates/answer_edit.html:74 templates/close.html:29
+#: templates/question_edit.html:120 templates/reopen.html:30
+#: templates/user_edit.html:83
+msgid "Cancel"
+msgstr ""
+
+#: templates/ask.html:4 templates/ask.html.py:60
+msgid "Ask a question"
+msgstr ""
+
+#: templates/ask.html:106
+msgid "Use"
+msgstr ""
+
+#: templates/ask.html:106
+msgid "learn more about OpenID"
+msgstr ""
+
+#: templates/ask.html:106 templates/authopenid/signin.html:35
+#: templates/authopenid/signin.html:61
+msgid "Login"
+msgstr ""
+
+#: templates/ask.html:109
+msgid "Get your own "
+msgstr ""
+
+#: templates/ask.html:117 templates/authopenid/sendpw.html:27
+msgid "User name"
+msgstr ""
+
+#: templates/ask.html:120
+msgid "Email: (won't be shown to anyone)"
+msgstr ""
+
+#: templates/ask.html:127
+msgid "Ask your question"
+msgstr ""
+
+#: templates/badge.html:6 templates/badge.html.py:17
+msgid "Badge"
+msgstr ""
+
+#: templates/badge.html:26
+msgid "The users have been awarded with badges:"
+msgstr ""
+
+#: templates/badges.html:5
+msgid "Badges summary"
+msgstr ""
+
+#: templates/badges.html:16 templates/user_stats.html:113
+msgid "Badges"
+msgstr ""
+
+#: templates/badges.html:20
+msgid ""
+"Community gives you awards for your questions, answers and votes. Below is "
+"the list of available badges and number of times each type of badge has been "
+"awarded."
+msgstr ""
+
+#: templates/badges.html:47
+msgid "Community badges"
+msgstr ""
+
+#: templates/badges.html:53
+msgid ""
+"Gold badge is very rare. To obtain it you have to show profound knowledge "
+"and ability in addition to actively participating in the community. Gold "
+"badge is the highest award in this community."
+msgstr ""
+
+#: templates/badges.html:61
+msgid ""
+"Obtaining silver badge requires significant patience. If you got one, you've "
+"very significantly contributed to this community"
+msgstr ""
+
+#: templates/badges.html:64
+msgid "bronze badge: often given as a special honor"
+msgstr ""
+
+#: templates/badges.html:68
+msgid ""
+"If you are active in this community, you will get this medal - still it is a "
+"special honor."
+msgstr ""
+
+#: templates/base.html:61 templates/base_content.html:60
+msgid "congratulations, community gave you a badge"
+msgstr ""
+
+#: templates/base.html:63 templates/base_content.html:62
+msgid "profile"
+msgstr ""
+
+#: templates/base_content.html:61
+msgid "see"
+msgstr ""
+
+#: templates/book.html:7
+msgid "reading channel"
+msgstr ""
+
+#: templates/book.html:26
+msgid "[author]"
+msgstr ""
+
+#: templates/book.html:30
+msgid "[publisher]"
+msgstr ""
+
+#: templates/book.html:34
+msgid "[publication date]"
+msgstr ""
+
+#: templates/book.html:38
+msgid "[price]"
+msgstr ""
+
+#: templates/book.html:39
+msgid "currency unit"
+msgstr ""
+
+#: templates/book.html:42
+msgid "[pages]"
+msgstr ""
+
+#: templates/book.html:43
+msgid "pages abbreviation"
+msgstr ""
+
+#: templates/book.html:46
+msgid "[tags]"
+msgstr ""
+
+#: templates/book.html:56
+msgid "author blog"
+msgstr ""
+
+#: templates/book.html:62
+msgid "book directory"
+msgstr ""
+
+#: templates/book.html:66
+msgid "buy online"
+msgstr ""
+
+#: templates/book.html:79
+msgid "reader questions"
+msgstr ""
+
+#: templates/book.html:82
+msgid "ask the author"
+msgstr ""
+
+#: templates/book.html:88 templates/book.html.py:93
+#: templates/users_questions.html:17
+msgid "this question was selected as favorite"
+msgstr ""
+
+#: templates/book.html:88 templates/book.html.py:93
+#: templates/users_questions.html:11 templates/users_questions.html.py:17
+msgid "number of times"
+msgstr ""
+
+#: templates/book.html:105 templates/index.html:47
+#: templates/unanswered.html:37 templates/users_questions.html:30
+msgid "votes"
+msgstr ""
+
+#: templates/book.html:108
+msgid "the answer has been accepted to be correct"
+msgstr ""
+
+#: templates/book.html:115 templates/index.html:48
+#: templates/unanswered.html:38 templates/users_questions.html:40
+msgid "views"
+msgstr ""
+
+#: templates/book.html:125 templates/index.html:68 templates/question.html:112
+#: templates/question.html.py:479 templates/tags.html:46
+#: templates/unanswered.html:75 templates/unanswered.html.py:109
+#: templates/users_questions.html:52
+msgid "using tags"
+msgstr ""
+
+#: templates/book.html:147
+msgid "subscribe to book RSS feed"
+msgstr ""
+
+#: templates/book.html:147 templates/index.html:115
+msgid "subscribe to the questions feed"
+msgstr ""
+
+#: templates/close.html:6 templates/close.html.py:16
+msgid "Close question"
+msgstr ""
+
+#: templates/close.html:19
+msgid "Close the question"
+msgstr ""
+
+#: templates/close.html:25
+msgid "Reasons"
+msgstr ""
+
+#: templates/close.html:28
+msgid "OK to close"
+msgstr ""
+
+#: templates/footer.html:5
+msgid "About us"
+msgstr ""
+
+#: templates/footer.html:6 templates/header.html:13 templates/index.html:83
+msgid "faq"
+msgstr ""
+
+#: templates/footer.html:8
+msgid "Contact"
+msgstr ""
+
+#: templates/footer.html:9
+msgid "Privacy"
+msgstr ""
+
+#: templates/footer.html:10
+msgid "Feedback"
+msgstr ""
+
+#: templates/header.html:8
+msgid "logout"
+msgstr ""
+
+#: templates/header.html:10 templates/authopenid/signup.html:39
+msgid "login"
+msgstr ""
+
+#: templates/header.html:12 templates/index.html:82
+msgid "about"
+msgstr ""
+
+#: templates/header.html:23
+msgid "back to home page"
+msgstr ""
+
+#: templates/header.html:29 templates/header.html.py:60
+msgid "questions"
+msgstr ""
+
+#: templates/header.html:31 templates/header.html.py:62
+msgid "users"
+msgstr ""
+
+#: templates/header.html:32
+msgid "books"
+msgstr ""
+
+#: templates/header.html:34 templates/index.html:120
+msgid "unanswered questions"
+msgstr ""
+
+#: templates/header.html:38
+msgid "my profile"
+msgstr ""
+
+#: templates/header.html:42
+msgid "ask a question"
+msgstr ""
+
+#: templates/header.html:57
+msgid "search"
+msgstr ""
+
+#: templates/index.html:6
+msgid "Home"
+msgstr ""
+
+#: templates/index.html:21
+msgid "Questions"
+msgstr ""
+
+#: templates/index.html:23
+msgid "last updated questions"
+msgstr ""
+
+#: templates/index.html:23 templates/unanswered.html:20
+msgid "newest"
+msgstr ""
+
+#: templates/index.html:24
+msgid "hottest questions"
+msgstr ""
+
+#: templates/index.html:24
+msgid "hottest"
+msgstr ""
+
+#: templates/index.html:25
+msgid "most voted questions"
+msgstr ""
+
+#: templates/index.html:25
+msgid "most voted"
+msgstr ""
+
+#: templates/index.html:26
+msgid "all questions"
+msgstr ""
+
+#: templates/index.html:46 templates/unanswered.html:36
+#: templates/users_questions.html:35
+msgid "answers"
+msgstr ""
+
+#: templates/index.html:68 templates/question.html:112
+#: templates/question.html.py:479 templates/tags.html:46
+#: templates/unanswered.html:75 templates/unanswered.html.py:109
+#: templates/users_questions.html:52
+msgid "see questions tagged"
+msgstr ""
+
+#: templates/index.html:79
+msgid "welcome to website"
+msgstr ""
+
+#: templates/index.html:88
+msgid "Recent tags"
+msgstr ""
+
+#: templates/index.html:93
+#, python-format
+msgid "see questions tagged '%(tagname)s'"
+msgstr ""
+
+#: templates/index.html:96 templates/index.html.py:120
+msgid "popular tags"
+msgstr ""
+
+#: templates/index.html:100
+msgid "Recent awards"
+msgstr ""
+
+#: templates/index.html:106
+msgid "given to"
+msgstr ""
+
+#: templates/index.html:111
+msgid "all awards"
+msgstr ""
+
+#: templates/index.html:115
+msgid "subscribe to last 30 questions by RSS"
+msgstr ""
+
+#: templates/index.html:120
+msgid "Still looking for more? See"
+msgstr ""
+
+#: templates/index.html:120
+msgid "complete list of quesionts"
+msgstr ""
+
+#: templates/index.html:120
+msgid "or"
+msgstr ""
+
+#: templates/index.html:120
+msgid "."
+msgstr ""
+
+#: templates/index.html:120
+msgid "Please help us answer"
+msgstr ""
+
+#: templates/logout.html:6 templates/logout.html.py:17
+msgid "Logout"
+msgstr ""
+
+#: templates/logout.html:20
+msgid ""
+"As a registered user you can login with your OpenID, log out of the site or "
+"permanently remove your account."
+msgstr ""
+
+#: templates/logout.html:21
+msgid "Logout now"
+msgstr ""
+
+#: templates/pagesize.html:5
+msgid "Size per page:"
+msgstr ""
+
+#: templates/paginator.html:5
+msgid "Previous"
+msgstr ""
+
+#: templates/privacy.html:6 templates/privacy.html.py:11
+msgid "Privacy policy"
+msgstr ""
+
+#: templates/privacy.html:15
+msgid "general message about privacy"
+msgstr ""
+
+#: templates/privacy.html:18
+msgid "Site Visitors"
+msgstr ""
+
+#: templates/privacy.html:20
+msgid "what technical information is collected about visitors"
+msgstr ""
+
+#: templates/privacy.html:23
+msgid "Personal Information"
+msgstr ""
+
+#: templates/privacy.html:25
+msgid "details on personal information policies"
+msgstr ""
+
+#: templates/privacy.html:28
+msgid "Other Services"
+msgstr ""
+
+#: templates/privacy.html:30
+msgid "details on sharing data with third parties"
+msgstr ""
+
+#: templates/privacy.html:35
+msgid "cookie policy details"
+msgstr ""
+
+#: templates/privacy.html:37
+msgid "Policy Changes"
+msgstr ""
+
+#: templates/privacy.html:38
+msgid "how privacy policies can be changed"
+msgstr ""
+
+#: templates/question.html:66 templates/question.html.py:78
+msgid "i like this post (click again to cancel)"
+msgstr ""
+
+#: templates/question.html:68 templates/question.html.py:80
+#: templates/question.html:273
+msgid "current number of votes"
+msgstr ""
+
+#: templates/question.html:73 templates/question.html.py:84
+msgid "i dont like this post (click again to cancel)"
+msgstr ""
+
+#: templates/question.html:90
+msgid "mark this question as favorite (click again to cancel)"
+msgstr ""
+
+#: templates/question.html:96
+msgid "remove favorite mark from this question (click again to restore mark)"
+msgstr ""
+
+#: templates/question.html:121 templates/question.html.py:304
+#: templates/revisions_answer.html:53 templates/revisions_question.html:53
+msgid "edit"
+msgstr ""
+
+#: templates/question.html:125 templates/question.html.py:314
+msgid "delete"
+msgstr ""
+
+#: templates/question.html:130
+msgid "reopen"
+msgstr ""
+
+#: templates/question.html:135
+msgid "close"
+msgstr ""
+
+#: templates/question.html:141 templates/question.html.py:327
+msgid ""
+"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
+msgstr ""
+
+#: templates/question.html:142 templates/question.html.py:328
+msgid "flag offensive"
+msgstr ""
+
+#: templates/question.html:154 templates/question.html.py:337
+#: templates/revisions_answer.html:65 templates/revisions_question.html:65
+msgid "updated"
+msgstr ""
+
+#: templates/question.html:203 templates/question.html.py:384
+#: templates/revisions_answer.html:63 templates/revisions_question.html:63
+msgid "asked"
+msgstr ""
+
+#: templates/question.html:233 templates/question.html.py:411
+msgid "comments"
+msgstr ""
+
+#: templates/question.html:234 templates/question.html.py:412
+msgid "add comment"
+msgstr ""
+
+#: templates/question.html:247
+#, python-format
+msgid ""
+"The question has been closed for the following reason \"%(question."
+"get_close_reason_display)s\" by"
+msgstr ""
+
+#: templates/question.html:249
+#, python-format
+msgid "close date %(question.closed_at)s"
+msgstr ""
+
+#: templates/question.html:256 templates/questions.html:44
+#: templates/user_stats.html:28
+msgid "Answers"
+msgstr ""
+
+#: templates/question.html:258
+msgid "oldest answers will be shown first"
+msgstr ""
+
+#: templates/question.html:258
+msgid "oldest answers"
+msgstr ""
+
+#: templates/question.html:259
+msgid "newest answers will be shown first"
+msgstr ""
+
+#: templates/question.html:259
+msgid "newest answers"
+msgstr ""
+
+#: templates/question.html:260
+msgid "most voted answers will be shown first"
+msgstr ""
+
+#: templates/question.html:260
+msgid "popular answers"
+msgstr ""
+
+#: templates/question.html:272
+msgid "i like this answer (click again to cancel)"
+msgstr ""
+
+#: templates/question.html:278
+msgid "i dont like this answer (click again to cancel)"
+msgstr ""
+
+#: templates/question.html:284
+msgid "mark this answer as favorite (click again to undo)"
+msgstr ""
+
+#: templates/question.html:289
+msgid "the author of the question has selected this answer as correct"
+msgstr ""
+
+#: templates/question.html:311
+msgid "undelete"
+msgstr ""
+
+#: templates/question.html:321
+msgid "answer permanent link"
+msgstr ""
+
+#: templates/question.html:322
+msgid "permanent link"
+msgstr ""
+
+#: templates/question.html:436
+msgid "Your answer"
+msgstr ""
+
+#: templates/question.html:460
+msgid "Answer the question"
+msgstr ""
+
+#: templates/question.html:462
+msgid "Login to answer"
+msgstr ""
+
+#: templates/question.html:474
+msgid "Question tags"
+msgstr ""
+
+#: templates/question.html:484
+msgid "question asked"
+msgstr ""
+
+#: templates/question.html:484 templates/question.html.py:490
+#: templates/user_info.html:51
+msgid "ago"
+msgstr ""
+
+#: templates/question.html:487
+msgid "question was seen"
+msgstr ""
+
+#: templates/question.html:487
+msgid "times"
+msgstr ""
+
+#: templates/question.html:490
+msgid "last updated"
+msgstr ""
+
+#: templates/question.html:495
+msgid "Related questions"
+msgstr ""
+
+#: templates/question_edit.html:4 templates/question_edit.html.py:65
+msgid "Edit question"
+msgstr ""
+
+#: templates/question_edit_tips.html:4
+msgid "question tips"
+msgstr ""
+
+#: templates/question_edit_tips.html:7
+msgid "please ask a relevant question"
+msgstr ""
+
+#: templates/question_edit_tips.html:10
+msgid "please try provide enough details"
+msgstr ""
+
+#: templates/question_edit_tips.html:13
+msgid "be clear and concise"
+msgstr ""
+
+#: templates/question_edit_tips.html:16
+msgid "see frequently asked questions"
+msgstr ""
+
+#: templates/question_edit_tips.html:22
+msgid "Markdown tips"
+msgstr ""
+
+#: templates/question_edit_tips.html:25
+msgid "*italic* or __italic__"
+msgstr ""
+
+#: templates/question_edit_tips.html:28
+msgid "**bold** or __bold__"
+msgstr ""
+
+#: templates/question_edit_tips.html:31
+msgid "link"
+msgstr ""
+
+#: templates/question_edit_tips.html:31 templates/question_edit_tips.html:36
+msgid "text"
+msgstr ""
+
+#: templates/question_edit_tips.html:36
+msgid "image"
+msgstr ""
+
+#: templates/question_edit_tips.html:40
+msgid "numbered list:"
+msgstr ""
+
+#: templates/question_edit_tips.html:45
+msgid "basic HTML tags are also supported"
+msgstr ""
+
+#: templates/question_edit_tips.html:48
+msgid "learn more about Markdown"
+msgstr ""
+
+#: templates/questions.html:6
+msgid "Question list"
+msgstr ""
+
+#: templates/questions.html:22
+msgid "Tagged questions"
+msgstr ""
+
+#: templates/questions.html:22
+msgid "Query result"
+msgstr ""
+
+#: templates/questions.html:22
+msgid "All questions"
+msgstr ""
+
+#: templates/questions.html:24
+msgid "New questions"
+msgstr ""
+
+#: templates/questions.html:24
+msgid "Newest"
+msgstr ""
+
+#: templates/questions.html:25
+msgid "Newest updated questions"
+msgstr ""
+
+#: templates/questions.html:25
+msgid "Active"
+msgstr ""
+
+#: templates/questions.html:26
+msgid "Questions with most answers"
+msgstr ""
+
+#: templates/questions.html:26
+msgid "Hottest"
+msgstr ""
+
+#: templates/questions.html:27
+msgid "Questions with most votes"
+msgstr ""
+
+#: templates/questions.html:27
+msgid "Best"
+msgstr ""
+
+#: templates/questions.html:45
+msgid "Votes"
+msgstr ""
+
+#: templates/questions.html:46
+msgid "Visits"
+msgstr ""
+
+#: templates/questions.html:57 templates/questions.html.py:69
+msgid "Community wiki"
+msgstr ""
+
+#: templates/questions.html:83
+msgid "Browse questions with tag of "
+msgstr ""
+
+#: templates/questions.html:125 templates/unanswered.html:105
+msgid "Related tags"
+msgstr ""
+
+#: templates/reopen.html:6 templates/reopen.html.py:16
+msgid "Reopen question"
+msgstr ""
+
+#: templates/reopen.html:19
+msgid "Open the previously closed question"
+msgstr ""
+
+#: templates/reopen.html:22
+msgid "The question was closed for the following reason "
+msgstr ""
+
+#: templates/reopen.html:22
+msgid "reason - leave blank in english"
+msgstr ""
+
+#: templates/reopen.html:22
+msgid "on "
+msgstr ""
+
+#: templates/reopen.html:22
+msgid "date closed"
+msgstr ""
+
+#: templates/reopen.html:29
+msgid "Reopen this question"
+msgstr ""
+
+#: templates/revisions_answer.html:7 templates/revisions_answer.html.py:36
+#: templates/revisions_question.html:8 templates/revisions_question.html:36
+msgid "Revision history"
+msgstr ""
+
+#: templates/tags.html:5 templates/tags.html.py:28
+msgid "Tag list"
+msgstr ""
+
+#: templates/tags.html:30
+msgid "sorted alphabetically"
+msgstr ""
+
+#: templates/tags.html:30
+msgid "by name"
+msgstr ""
+
+#: templates/tags.html:31
+msgid "sorted by frequency of tag use"
+msgstr ""
+
+#: templates/tags.html:31
+msgid "by popularity"
+msgstr ""
+
+#: templates/tags.html:37
+msgid "All tags matching query"
+msgstr ""
+
+#: templates/tags.html:37
+msgid "all tags - make this empty in english"
+msgstr ""
+
+#: templates/tags.html:40
+msgid "Nothing found"
+msgstr ""
+
+#: templates/unanswered.html:7 templates/unanswered.html.py:18
+msgid "Unanswered questions"
+msgstr ""
+
+#: templates/unanswered.html:20
+msgid "most recently asked questions"
+msgstr ""
+
+#: templates/unanswered.html:97
+#, python-format
+msgid "have %(num_q)s unanswered questions"
+msgstr ""
+
+#: templates/unanswered.html:99
+msgid "Have a total of"
+msgstr ""
+
+#: templates/user_edit.html:6
+msgid "Edit user profile"
+msgstr ""
+
+#: templates/user_edit.html:19
+msgid "edit profile"
+msgstr ""
+
+#: templates/user_edit.html:31
+msgid "image associated with your email address"
+msgstr ""
+
+#: templates/user_edit.html:31
+msgid "avatar"
+msgstr ""
+
+#: templates/user_edit.html:36 templates/user_info.html:31
+msgid "Registered user"
+msgstr ""
+
+#: templates/user_edit.html:82
+msgid "Update"
+msgstr ""
+
+#: templates/user_info.html:34
+msgid "update profile"
+msgstr ""
+
+#: templates/user_info.html:40
+msgid "real name"
+msgstr ""
+
+#: templates/user_info.html:45
+msgid "member for"
+msgstr ""
+
+#: templates/user_info.html:50
+msgid "last seen"
+msgstr ""
+
+#: templates/user_info.html:56
+msgid "user website"
+msgstr ""
+
+#: templates/user_info.html:62
+msgid "location"
+msgstr ""
+
+#: templates/user_info.html:69
+msgid "age"
+msgstr ""
+
+#: templates/user_info.html:70
+msgid "age unit"
+msgstr ""
+
+#: templates/user_info.html:75
+msgid "todays unused votes"
+msgstr ""
+
+#: templates/user_info.html:76
+msgid "votes left"
+msgstr ""
+
+#: templates/user_stats.html:15
+msgid "User questions"
+msgstr ""
+
+#: templates/user_stats.html:37
+#, python-format
+msgid "the answer has been voted for %(vote_count)s times"
+msgstr ""
+
+#: templates/user_stats.html:37
+msgid "this answer has been selected as correct"
+msgstr ""
+
+#: templates/user_stats.html:43
+#, python-format
+msgid "the answer has been commented %(answered_question.comment_count)s times"
+msgstr ""
+
+#: templates/user_stats.html:56
+msgid "votes total"
+msgstr ""
+
+#: templates/user_stats.html:65
+msgid "user has voted up this many times"
+msgstr ""
+
+#: templates/user_stats.html:70
+msgid "user voted down this many times"
+msgstr ""
+
+#: templates/user_stats.html:84
+msgid "Tags"
+msgstr ""
+
+#: templates/user_stats.html:94
+#, python-format
+msgid "see other questions tagged '%(tag)s' "
+msgstr ""
+
+#: templates/user_tabs.html:7
+msgid "User profile"
+msgstr ""
+
+#: templates/user_tabs.html:16
+msgid "graph of user reputation"
+msgstr ""
+
+#: templates/user_tabs.html:17
+msgid "reputation history"
+msgstr ""
+
+#: templates/user_tabs.html:24
+msgid "favorites"
+msgstr ""
+
+#: templates/user_tabs.html:29
+msgid "settings"
+msgstr ""
+
+#: templates/user_votes.html:14
+msgid "upvote"
+msgstr ""
+
+#: templates/user_votes.html:16
+msgid "downvote"
+msgstr ""
+
+#: templates/users.html:5 templates/users.html.py:23
+msgid "Users"
+msgstr ""
+
+#: templates/users.html:26
+msgid "recent"
+msgstr ""
+
+#: templates/users.html:27
+msgid "oldest"
+msgstr ""
+
+#: templates/users.html:28
+msgid "by username"
+msgstr ""
+
+#: templates/users.html:34
+#, python-format
+msgid "users matching query %(suser)s:"
+msgstr ""
+
+#: templates/users.html:38
+msgid "Nothing found."
+msgstr ""
+
+#: templates/users_questions.html:11
+msgid "this questions was selected as favorite"
+msgstr ""
+
+#: templates/users_questions.html:33
+msgid "this answer has been accepted to be correct"
+msgstr ""
+
+#: templates/authopenid/changeemail.html:6
+msgid "Account: change email"
+msgstr ""
+
+#: templates/authopenid/changeemail.html:9
+msgid ""
+"This is where you can change the email address associated with your account. "
+"Please keep this email address up to date so we can send you a password-"
+"reset email if you request one."
+msgstr ""
+
+#: templates/authopenid/changeemail.html:11
+#: templates/authopenid/changeopenid.html:13
+#: templates/authopenid/changepw.html:18 templates/authopenid/delete.html:14
+#: templates/authopenid/delete.html:24
+msgid "Please correct errors below:"
+msgstr ""
+
+#: templates/authopenid/changeemail.html:28
+msgid "Email"
+msgstr ""
+
+#: templates/authopenid/changeemail.html:29
+#: templates/authopenid/signin.html:60
+msgid "Password"
+msgstr ""
+
+#: templates/authopenid/changeemail.html:31
+msgid "Change email"
+msgstr ""
+
+#: templates/authopenid/changeopenid.html:7
+msgid "Account: change OpenID URL"
+msgstr ""
+
+#: templates/authopenid/changeopenid.html:11
+msgid ""
+"This is where you can change your OpenID URL. Make sure you remember it!"
+msgstr ""
+
+#: templates/authopenid/changeopenid.html:28
+msgid "OpenID URL:"
+msgstr ""
+
+#: templates/authopenid/changeopenid.html:29
+msgid "Change OpenID"
+msgstr ""
+
+#: templates/authopenid/changepw.html:13
+msgid "Account: change password"
+msgstr ""
+
+#: templates/authopenid/changepw.html:16
+msgid "This is where you can change your password. Make sure you remember it!"
+msgstr ""
+
+#: templates/authopenid/changepw.html:26
+msgid "Current password"
+msgstr ""
+
+#: templates/authopenid/changepw.html:27
+msgid "New password"
+msgstr ""
+
+#: templates/authopenid/changepw.html:28
+msgid "New password again"
+msgstr ""
+
+#: templates/authopenid/changepw.html:29 templates/authopenid/settings.html:28
+msgid "Change password"
+msgstr ""
+
+#: templates/authopenid/complete.html:4
+msgid "Connect your OpenID with this site"
+msgstr ""
+
+#: templates/authopenid/complete.html:7
+msgid "Connect your OpenID with your account on this site"
+msgstr ""
+
+#: templates/authopenid/complete.html:10
+msgid "Your OpenID is accepted. Please complete this to finish registration."
+msgstr ""
+
+#: templates/authopenid/complete.html:11
+msgid "This account already exists, please use another."
+msgstr ""
+
+#: templates/authopenid/complete.html:16 templates/authopenid/complete.html:29
+#: templates/authopenid/signin.html:43
+msgid "Sorry, looks like we have some errors:"
+msgstr ""
+
+#: templates/authopenid/complete.html:45
+msgid "New account"
+msgstr ""
+
+#: templates/authopenid/complete.html:46
+msgid "User name (<i>will be shown to others, cannot be modified</i>)"
+msgstr ""
+
+#: templates/authopenid/complete.html:47
+msgid "Email (<i>not shared with anyone</i>)"
+msgstr ""
+
+#: templates/authopenid/complete.html:48
+msgid "create account"
+msgstr ""
+
+#: templates/authopenid/complete.html:56
+msgid "Existing account"
+msgstr ""
+
+#: templates/authopenid/complete.html:57
+msgid "user name"
+msgstr ""
+
+#: templates/authopenid/complete.html:58
+msgid "password"
+msgstr ""
+
+#: templates/authopenid/complete.html:61
+msgid "Register"
+msgstr ""
+
+#: templates/authopenid/complete.html:62 templates/authopenid/signin.html:62
+msgid "Forgot your password?"
+msgstr ""
+
+#: templates/authopenid/delete.html:8
+msgid "Account: delete account"
+msgstr ""
+
+#: templates/authopenid/delete.html:12
+msgid ""
+"Note: After deleting your account, anyone will be able to register this "
+"username."
+msgstr ""
+
+#: templates/authopenid/delete.html:16
+msgid "Check confirm box, if you want delete your account."
+msgstr ""
+
+#: templates/authopenid/delete.html:19
+msgid "Password:"
+msgstr ""
+
+#: templates/authopenid/delete.html:31
+msgid "I am sure I want to delete my account."
+msgstr ""
+
+#: templates/authopenid/delete.html:32
+msgid "Password/OpenID URL"
+msgstr ""
+
+#: templates/authopenid/delete.html:32
+msgid "(required for your security)"
+msgstr ""
+
+#: templates/authopenid/delete.html:34
+msgid "Delete account permanently"
+msgstr ""
+
+#: templates/authopenid/sendpw.html:3 templates/authopenid/sendpw.html.py:7
+msgid "Send new password"
+msgstr ""
+
+#: templates/authopenid/sendpw.html:11
+msgid "Lost your password? No problem - here you can reset it."
+msgstr ""
+
+#: templates/authopenid/sendpw.html:12
+msgid ""
+"Please enter your username below and new password will be sent to your "
+"registered e-mail"
+msgstr ""
+
+#: templates/authopenid/sendpw.html:29
+msgid "Reset password"
+msgstr ""
+
+#: templates/authopenid/sendpw.html:29
+msgid "return to login"
+msgstr ""
+
+#: templates/authopenid/sendpw.html:32
+msgid ""
+"Note: your new password will be activated only after you click the "
+"activation link in the email message"
+msgstr ""
+
+#: templates/authopenid/settings.html:29
+msgid "Give your account a new password."
+msgstr ""
+
+#: templates/authopenid/settings.html:30
+msgid "Change email "
+msgstr ""
+
+#: templates/authopenid/settings.html:31
+msgid "Add or update the email address associated with your account."
+msgstr ""
+
+#: templates/authopenid/settings.html:34
+msgid "Change openid associated to your account"
+msgstr ""
+
+#: templates/authopenid/settings.html:37
+msgid "Delete account"
+msgstr ""
+
+#: templates/authopenid/settings.html:38
+msgid "Erase your username and all your data from website"
+msgstr ""
+
+#: templates/authopenid/signin.html:3 templates/authopenid/signin.html:16
+msgid "User login"
+msgstr ""
+
+#: templates/authopenid/signin.html:21
+msgid "we support two login modes"
+msgstr ""
+
+#: templates/authopenid/signin.html:26 templates/authopenid/signup.html:49
+msgid "Login with your OpenID"
+msgstr ""
+
+#: templates/authopenid/signin.html:28
+msgid "select openid provider"
+msgstr ""
+
+#: templates/authopenid/signin.html:32
+msgid "verify openid link and login"
+msgstr ""
+
+#: templates/authopenid/signin.html:58
+msgid "Use login name and password"
+msgstr ""
+
+#: templates/authopenid/signin.html:59
+msgid "Login name"
+msgstr ""
+
+#: templates/authopenid/signin.html:63
+msgid "Create new acccount"
+msgstr ""
+
+#: templates/authopenid/signin.html:72
+msgid "Why use OpenID?"
+msgstr ""
+
+#: templates/authopenid/signin.html:76
+msgid "with openid it is easier"
+msgstr ""
+
+#: templates/authopenid/signin.html:79
+msgid "reuse openid"
+msgstr ""
+
+#: templates/authopenid/signin.html:82
+msgid "openid is widely adopted"
+msgstr ""
+
+#: templates/authopenid/signin.html:85
+msgid "openid is supported open standard"
+msgstr ""
+
+#: templates/authopenid/signin.html:89
+msgid "Find out more"
+msgstr ""
+
+#: templates/authopenid/signin.html:90
+msgid "Get OpenID"
+msgstr ""
+
+#: templates/authopenid/signup.html:2 templates/authopenid/signup.html.py:6
+msgid "Signup"
+msgstr ""
+
+#: templates/authopenid/signup.html:10
+msgid ""
+"We support two types of user registration: conventional username/password, "
+"and"
+msgstr ""
+
+#: templates/authopenid/signup.html:10
+msgid "the OpenID method"
+msgstr ""
+
+#: templates/authopenid/signup.html:15
+msgid "Sorry, looks like we have some errors"
+msgstr ""
+
+#: templates/authopenid/signup.html:33
+msgid "Conventional registration"
+msgstr ""
+
+#: templates/authopenid/signup.html:34
+msgid "choose a user name"
+msgstr ""
+
+#: templates/authopenid/signup.html:40
+msgid "back to login"
+msgstr ""
+
+#: templates/authopenid/signup.html:46
+msgid "Register with your OpenID"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/django.mo b/locale/es/LC_MESSAGES/django.mo
new file mode 100644
index 00000000..8c359972
--- /dev/null
+++ b/locale/es/LC_MESSAGES/django.mo
Binary files differ
diff --git a/locale/es/LC_MESSAGES/django.po b/locale/es/LC_MESSAGES/django.po
new file mode 100644
index 00000000..93cfdfe4
--- /dev/null
+++ b/locale/es/LC_MESSAGES/django.po
@@ -0,0 +1,1973 @@
+# 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: 2009-07-28 15:57+0000\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"
+
+#: settings.py:12
+msgid "account/"
+msgstr ""
+
+#: settings.py:12 django_authopenid/urls.py:9 django_authopenid/urls.py:11
+msgid "signin/"
+msgstr ""
+
+#: django_authopenid/forms.py:67 django_authopenid/views.py:93
+msgid "i-names are not supported"
+msgstr ""
+
+#: django_authopenid/forms.py:102 django_authopenid/forms.py:207
+msgid ""
+"Usernames can only contain letters, numbers and "
+"underscores"
+msgstr ""
+
+#: django_authopenid/forms.py:109
+msgid ""
+"This username does not exist in our database. Please "
+"choose another."
+msgstr ""
+
+#: django_authopenid/forms.py:126 django_authopenid/forms.py:231
+msgid ""
+"Please enter a valid username and password. Note that "
+"both fields are case-sensitive."
+msgstr ""
+
+#: django_authopenid/forms.py:130 django_authopenid/forms.py:235
+msgid "This account is inactive."
+msgstr ""
+
+#: django_authopenid/forms.py:158
+msgid "invalid user name"
+msgstr ""
+
+#: django_authopenid/forms.py:160
+msgid "sorry, this name can not be used, please try another"
+msgstr ""
+
+#: django_authopenid/forms.py:162
+msgid "username too short"
+msgstr ""
+
+#: django_authopenid/forms.py:170 django_authopenid/forms.py:171
+msgid "this name is already in use - please try anoter"
+msgstr ""
+
+#: django_authopenid/forms.py:184
+msgid ""
+"This email is already registered in our database. Please "
+"choose another."
+msgstr ""
+
+#: django_authopenid/forms.py:214
+msgid ""
+"This username don't exist. Please choose another."
+msgstr ""
+
+#: django_authopenid/forms.py:253
+msgid "choose a username"
+msgstr ""
+
+#: django_authopenid/forms.py:255 templates/authopenid/signup.html:36
+msgid "your email address"
+msgstr ""
+
+#: django_authopenid/forms.py:257 templates/authopenid/signup.html:37
+msgid "choose password"
+msgstr ""
+
+#: django_authopenid/forms.py:259 templates/authopenid/signup.html:38
+msgid "retype password"
+msgstr ""
+
+#: django_authopenid/forms.py:330
+msgid ""
+"Old password is incorrect. Please enter the correct "
+"password."
+msgstr ""
+
+#: django_authopenid/forms.py:342
+msgid "new passwords do not match"
+msgstr ""
+
+#: django_authopenid/forms.py:434
+msgid "Incorrect username."
+msgstr ""
+
+#: django_authopenid/urls.py:10
+msgid "signout/"
+msgstr ""
+
+#: django_authopenid/urls.py:11
+msgid "complete/"
+msgstr ""
+
+#: django_authopenid/urls.py:13
+msgid "register/"
+msgstr ""
+
+#: django_authopenid/urls.py:14
+msgid "signup/"
+msgstr ""
+
+#: django_authopenid/urls.py:16
+msgid "sendpw/"
+msgstr ""
+
+#: django_authopenid/urls.py:26
+msgid "delete/"
+msgstr ""
+
+#: django_authopenid/views.py:99
+#, python-format
+msgid "非法OpenID地址: %s"
+msgstr ""
+
+#: django_authopenid/views.py:366
+msgid "Welcome"
+msgstr ""
+
+#: django_authopenid/views.py:456
+msgid "Password changed."
+msgstr ""
+
+#: django_authopenid/views.py:488
+msgid "Email changed."
+msgstr ""
+
+#: django_authopenid/views.py:519 django_authopenid/views.py:671
+#, python-format
+msgid "No OpenID %s found associated in our database"
+msgstr ""
+
+#: django_authopenid/views.py:523 django_authopenid/views.py:678
+#, python-format
+msgid "The OpenID %s isn't associated to current user logged in"
+msgstr ""
+
+#: django_authopenid/views.py:531
+msgid "Email Changed."
+msgstr ""
+
+#: django_authopenid/views.py:606
+msgid "This OpenID is already associated with another account."
+msgstr ""
+
+#: django_authopenid/views.py:611
+#, python-format
+msgid "OpenID %s is now associated with your account."
+msgstr ""
+
+#: django_authopenid/views.py:681
+msgid "Account deleted."
+msgstr ""
+
+#: django_authopenid/views.py:721
+msgid "Request for new password"
+msgstr ""
+
+#: django_authopenid/views.py:734
+msgid "A new password has been sent to your email address."
+msgstr ""
+
+#: django_authopenid/views.py:764
+#, python-format
+msgid ""
+"Could not change password. Confirmation key '%s' is not "
+"registered."
+msgstr ""
+
+#: django_authopenid/views.py:773
+msgid ""
+"Can not change password. User don't exist anymore in our "
+"database."
+msgstr ""
+
+#: django_authopenid/views.py:782
+#, python-format
+msgid "Password changed for %s. You may now sign in."
+msgstr ""
+
+#: forum/const.py:8
+msgid "duplicate question"
+msgstr ""
+
+#: forum/const.py:9
+msgid "question if off-topic or not relevant"
+msgstr ""
+
+#: forum/const.py:10
+msgid "too subjective and argumentative"
+msgstr ""
+
+#: forum/const.py:11
+msgid "is not an answer to the question"
+msgstr ""
+
+#: forum/const.py:12
+msgid "the question is answered, right answer was accepted"
+msgstr ""
+
+#: forum/const.py:13
+msgid "problem is not reproducible or outdated"
+msgstr ""
+
+#: forum/const.py:15
+msgid "question contains offensive inappropriate, or malicious remarks"
+msgstr ""
+
+#: forum/const.py:16
+msgid "spam or advertising"
+msgstr ""
+
+#: forum/const.py:56
+msgid "question"
+msgstr ""
+
+#: forum/const.py:57 templates/book.html:110
+msgid "answer"
+msgstr ""
+
+#: forum/const.py:58
+msgid "commented question"
+msgstr ""
+
+#: forum/const.py:59
+msgid "commented answer"
+msgstr ""
+
+#: forum/const.py:60
+msgid "edited question"
+msgstr ""
+
+#: forum/const.py:61
+msgid "edited answer"
+msgstr ""
+
+#: forum/const.py:62
+msgid "received award"
+msgstr ""
+
+#: forum/const.py:63
+msgid "marked best answer"
+msgstr ""
+
+#: forum/const.py:64
+msgid "upvoted"
+msgstr ""
+
+#: forum/const.py:65
+msgid "downvoted"
+msgstr ""
+
+#: forum/const.py:66
+msgid "canceled vote"
+msgstr ""
+
+#: forum/const.py:67
+msgid "deleted question"
+msgstr ""
+
+#: forum/const.py:68
+msgid "deleted answer"
+msgstr ""
+
+#: forum/const.py:69
+msgid "marked offensive"
+msgstr ""
+
+#: forum/const.py:70
+msgid "updated tags"
+msgstr ""
+
+#: forum/const.py:71
+msgid "selected favorite"
+msgstr ""
+
+#: forum/const.py:72
+msgid "completed user profile"
+msgstr ""
+
+#: forum/const.py:83
+msgid "[closed]"
+msgstr ""
+
+#: forum/const.py:84
+msgid "[deleted]"
+msgstr ""
+
+#: forum/const.py:85
+msgid "initial version"
+msgstr ""
+
+#: forum/const.py:86
+msgid "retagged"
+msgstr ""
+
+#: forum/feed.py:17
+msgid "site title"
+msgstr ""
+
+#: forum/feed.py:17
+msgid " - "
+msgstr ""
+
+#: forum/feed.py:17
+msgid "site slogan"
+msgstr ""
+
+#: forum/feed.py:17
+msgid "latest questions"
+msgstr ""
+
+#: forum/feed.py:20
+msgid "meta site content"
+msgstr ""
+
+#: forum/feed.py:22
+msgid "copyright message"
+msgstr ""
+
+#: forum/forms.py:14 templates/question_edit_tips.html:31
+#: templates/question_edit_tips.html:36
+msgid "title"
+msgstr ""
+
+#: forum/forms.py:15
+msgid "please enter a descriptive title for your question"
+msgstr ""
+
+#: forum/forms.py:20
+msgid "title must be > 10 characters"
+msgstr ""
+
+#: forum/forms.py:29
+msgid "content"
+msgstr ""
+
+#: forum/forms.py:35
+msgid "question content must be > 10 characters"
+msgstr ""
+
+#: forum/forms.py:45 templates/header.html:30 templates/header.html.py:61
+msgid "tags"
+msgstr ""
+
+#: forum/forms.py:46
+msgid "please use space to separate tags (this enables autocomplete feature)"
+msgstr ""
+
+#: forum/forms.py:53
+msgid "tags are required"
+msgstr ""
+
+#: forum/forms.py:57
+msgid "please use 5 tags or less"
+msgstr ""
+
+#: forum/forms.py:60
+msgid "tags must be shorter than 20 characters"
+msgstr ""
+
+#: forum/forms.py:64
+msgid ""
+"please use following characters in tags: letters 'a-z', numbers, and "
+"characters '.-_#'"
+msgstr ""
+
+#: forum/forms.py:74 templates/index.html:56 templates/question.html:196
+#: templates/question.html.py:377 templates/unanswered.html:48
+#: templates/unanswered.html.py:60
+msgid "community wiki"
+msgstr ""
+
+#: forum/forms.py:75
+msgid ""
+"if you choose community wiki option, the question and answer do not generate "
+"points and name of author will not be shown"
+msgstr ""
+
+#: forum/forms.py:84
+msgid "update summary:"
+msgstr ""
+
+#: forum/forms.py:85
+msgid ""
+"enter a brief summary of your revision (e.g. fixed spelling, grammar, "
+"improved style, this field is optional)"
+msgstr ""
+
+#: forum/forms.py:160
+msgid "this email does not have to be linked to gravatar"
+msgstr ""
+
+#: forum/forms.py:161
+msgid "Real name"
+msgstr ""
+
+#: forum/forms.py:162
+msgid "Website"
+msgstr ""
+
+#: forum/forms.py:163
+msgid "Location"
+msgstr ""
+
+#: forum/forms.py:164
+msgid "Date of birth"
+msgstr ""
+
+#: forum/forms.py:164
+msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
+msgstr ""
+
+#: forum/forms.py:165 templates/authopenid/settings.html:20
+msgid "Profile"
+msgstr ""
+
+#: forum/forms.py:190 forum/forms.py:191
+msgid "this email has already been registered, please use another one"
+msgstr ""
+
+#: forum/models.py:316 templates/badges.html:50
+msgid "gold"
+msgstr ""
+
+#: forum/models.py:317 templates/badges.html:58
+msgid "silver"
+msgstr ""
+
+#: forum/models.py:318 templates/badges.html:65
+msgid "bronze"
+msgstr ""
+
+#: forum/user.py:17 templates/user_tabs.html:7
+msgid "overview"
+msgstr ""
+
+#: forum/user.py:18
+msgid "user profile"
+msgstr ""
+
+#: forum/user.py:19
+msgid "user profile overview"
+msgstr ""
+
+#: forum/user.py:25 templates/user_tabs.html:9
+msgid "recent activity"
+msgstr ""
+
+#: forum/user.py:26
+msgid "recent user activity"
+msgstr ""
+
+#: forum/user.py:27
+msgid "profile - recent activity"
+msgstr ""
+
+#: forum/user.py:34 templates/user_tabs.html:13
+msgid "responses"
+msgstr ""
+
+#: forum/user.py:35 templates/user_tabs.html:12
+msgid "comments and answers to others questions"
+msgstr ""
+
+#: forum/user.py:36
+msgid "profile - responses"
+msgstr ""
+
+#: forum/user.py:43 templates/user_info.html:23 templates/users.html:25
+msgid "reputation"
+msgstr ""
+
+#: forum/user.py:44
+msgid "user reputation in the community"
+msgstr ""
+
+#: forum/user.py:45
+msgid "profile - user reputation"
+msgstr ""
+
+#: forum/user.py:51
+msgid "favorite questions"
+msgstr ""
+
+#: forum/user.py:52
+msgid "users favorite questions"
+msgstr ""
+
+#: forum/user.py:53
+msgid "profile - favorite questions"
+msgstr ""
+
+#: forum/user.py:60 templates/user_tabs.html:20
+msgid "casted votes"
+msgstr ""
+
+#: forum/user.py:61 templates/user_tabs.html:20
+msgid "user vote record"
+msgstr ""
+
+#: forum/user.py:62
+msgid "profile - votes"
+msgstr ""
+
+#: forum/user.py:69
+msgid "preferences"
+msgstr ""
+
+#: forum/user.py:70 templates/user_tabs.html:28
+msgid "user preference settings"
+msgstr ""
+
+#: forum/user.py:71
+msgid "profile - user preferences"
+msgstr ""
+
+#: forum/views.py:1726
+msgid "uploading images is limited to users with >60 reputation points"
+msgstr ""
+
+#: forum/views.py:1728
+msgid "allowed file types are 'jpg', 'jpeg', 'gif', 'bmp', 'png', 'tiff'"
+msgstr ""
+
+#: forum/views.py:1730
+#, python-format
+msgid "maximum upload file size is %sK"
+msgstr ""
+
+#: forum/views.py:1732
+#, python-format
+msgid ""
+"Error uploading file. Please contact the site administrator. Thank you. %s"
+msgstr ""
+
+#: forum/templatetags/extra_tags.py:139 forum/templatetags/extra_tags.py:168
+#: templates/header.html:33
+msgid "badges"
+msgstr ""
+
+#: forum/templatetags/extra_tags.py:140 forum/templatetags/extra_tags.py:167
+msgid "reputation points"
+msgstr ""
+
+#: forum/templatetags/extra_tags.py:221
+msgid " ago"
+msgstr ""
+
+#: templates/404.html:24
+msgid "Sorry, could not find the page you requested."
+msgstr ""
+
+#: templates/404.html:26
+msgid "This might have happened for the following reasons:"
+msgstr ""
+
+#: templates/404.html:28
+msgid "this question or answer has been deleted;"
+msgstr ""
+
+#: templates/404.html:29
+msgid "url has error - please check it;"
+msgstr ""
+
+#: templates/404.html:30
+msgid ""
+"the page you tried to visit is protected or you don't have sufficient "
+"points, see"
+msgstr ""
+
+#: templates/404.html:31
+msgid "if you believe this error 404 should not have occured, please"
+msgstr ""
+
+#: templates/404.html:32
+msgid "report this problem"
+msgstr ""
+
+#: templates/404.html:41 templates/500.html:27
+msgid "back to previous page"
+msgstr ""
+
+#: templates/404.html:42
+msgid "see all questions"
+msgstr ""
+
+#: templates/404.html:43
+msgid "see all tags"
+msgstr ""
+
+#: templates/500.html:24
+msgid "system error log is recorded, error will be fixed as soon as possible"
+msgstr ""
+
+#: templates/500.html:25
+msgid "please report the error to the site administrators if you wish"
+msgstr ""
+
+#: templates/500.html:28
+msgid "see latest questions"
+msgstr ""
+
+#: templates/500.html:29
+msgid "see tags"
+msgstr ""
+
+#: templates/answer_edit.html:4 templates/answer_edit.html.py:47
+msgid "Edit answer"
+msgstr ""
+
+#: templates/answer_edit.html:24 templates/answer_edit.html.py:27
+#: templates/ask.html:25 templates/ask.html.py:28 templates/question.html:37
+#: templates/question.html.py:40 templates/question_edit.html:27
+msgid "hide preview"
+msgstr ""
+
+#: templates/answer_edit.html:27 templates/ask.html:28
+#: templates/question.html:40 templates/question_edit.html:27
+msgid "show preview"
+msgstr ""
+
+#: templates/answer_edit.html:47 templates/question_edit.html:65
+#: templates/revisions_answer.html:36 templates/revisions_question.html:36
+msgid "back"
+msgstr ""
+
+#: templates/answer_edit.html:52 templates/question_edit.html:70
+#: templates/revisions_answer.html:47 templates/revisions_question.html:47
+msgid "revision"
+msgstr ""
+
+#: templates/answer_edit.html:55 templates/question_edit.html:74
+msgid "select revision"
+msgstr ""
+
+#: templates/answer_edit.html:62 templates/ask.html:81
+#: templates/question.html:447 templates/question_edit.html:91
+msgid "Toggle the real time Markdown editor preview"
+msgstr ""
+
+#: templates/answer_edit.html:62 templates/ask.html:81
+#: templates/question.html:447 templates/question_edit.html:91
+msgid "toggle preview"
+msgstr ""
+
+#: templates/answer_edit.html:73 templates/question_edit.html:119
+msgid "Save edit"
+msgstr ""
+
+#: templates/answer_edit.html:74 templates/close.html:29
+#: templates/question_edit.html:120 templates/reopen.html:30
+#: templates/user_edit.html:83
+msgid "Cancel"
+msgstr ""
+
+#: templates/ask.html:4 templates/ask.html.py:60
+msgid "Ask a question"
+msgstr ""
+
+#: templates/ask.html:106
+msgid "Use"
+msgstr ""
+
+#: templates/ask.html:106
+msgid "learn more about OpenID"
+msgstr ""
+
+#: templates/ask.html:106 templates/authopenid/signin.html:35
+#: templates/authopenid/signin.html:61
+msgid "Login"
+msgstr ""
+
+#: templates/ask.html:109
+msgid "Get your own "
+msgstr ""
+
+#: templates/ask.html:117 templates/authopenid/sendpw.html:27
+msgid "User name"
+msgstr ""
+
+#: templates/ask.html:120
+msgid "Email: (won't be shown to anyone)"
+msgstr ""
+
+#: templates/ask.html:127
+msgid "Ask your question"
+msgstr ""
+
+#: templates/badge.html:6 templates/badge.html.py:17
+msgid "Badge"
+msgstr ""
+
+#: templates/badge.html:26
+msgid "The users have been awarded with badges:"
+msgstr ""
+
+#: templates/badges.html:5
+msgid "Badges summary"
+msgstr ""
+
+#: templates/badges.html:16 templates/user_stats.html:113
+msgid "Badges"
+msgstr ""
+
+#: templates/badges.html:20
+msgid ""
+"Community gives you awards for your questions, answers and votes. Below is "
+"the list of available badges and number of times each type of badge has been "
+"awarded."
+msgstr ""
+
+#: templates/badges.html:47
+msgid "Community badges"
+msgstr ""
+
+#: templates/badges.html:53
+msgid ""
+"Gold badge is very rare. To obtain it you have to show profound knowledge "
+"and ability in addition to actively participating in the community. Gold "
+"badge is the highest award in this community."
+msgstr ""
+
+#: templates/badges.html:61
+msgid ""
+"Obtaining silver badge requires significant patience. If you got one, you've "
+"very significantly contributed to this community"
+msgstr ""
+
+#: templates/badges.html:64
+msgid "bronze badge: often given as a special honor"
+msgstr ""
+
+#: templates/badges.html:68
+msgid ""
+"If you are active in this community, you will get this medal - still it is a "
+"special honor."
+msgstr ""
+
+#: templates/base.html:61 templates/base_content.html:60
+msgid "congratulations, community gave you a badge"
+msgstr ""
+
+#: templates/base.html:63 templates/base_content.html:62
+msgid "profile"
+msgstr ""
+
+#: templates/base_content.html:61
+msgid "see"
+msgstr ""
+
+#: templates/book.html:7
+msgid "reading channel"
+msgstr ""
+
+#: templates/book.html:26
+msgid "[author]"
+msgstr ""
+
+#: templates/book.html:30
+msgid "[publisher]"
+msgstr ""
+
+#: templates/book.html:34
+msgid "[publication date]"
+msgstr ""
+
+#: templates/book.html:38
+msgid "[price]"
+msgstr ""
+
+#: templates/book.html:39
+msgid "currency unit"
+msgstr ""
+
+#: templates/book.html:42
+msgid "[pages]"
+msgstr ""
+
+#: templates/book.html:43
+msgid "pages abbreviation"
+msgstr ""
+
+#: templates/book.html:46
+msgid "[tags]"
+msgstr ""
+
+#: templates/book.html:56
+msgid "author blog"
+msgstr ""
+
+#: templates/book.html:62
+msgid "book directory"
+msgstr ""
+
+#: templates/book.html:66
+msgid "buy online"
+msgstr ""
+
+#: templates/book.html:79
+msgid "reader questions"
+msgstr ""
+
+#: templates/book.html:82
+msgid "ask the author"
+msgstr ""
+
+#: templates/book.html:88 templates/book.html.py:93
+#: templates/users_questions.html:17
+msgid "this question was selected as favorite"
+msgstr ""
+
+#: templates/book.html:88 templates/book.html.py:93
+#: templates/users_questions.html:11 templates/users_questions.html.py:17
+msgid "number of times"
+msgstr ""
+
+#: templates/book.html:105 templates/index.html:47
+#: templates/unanswered.html:37 templates/users_questions.html:30
+msgid "votes"
+msgstr ""
+
+#: templates/book.html:108
+msgid "the answer has been accepted to be correct"
+msgstr ""
+
+#: templates/book.html:115 templates/index.html:48
+#: templates/unanswered.html:38 templates/users_questions.html:40
+msgid "views"
+msgstr ""
+
+#: templates/book.html:125 templates/index.html:68 templates/question.html:112
+#: templates/question.html.py:479 templates/tags.html:46
+#: templates/unanswered.html:75 templates/unanswered.html.py:109
+#: templates/users_questions.html:52
+msgid "using tags"
+msgstr ""
+
+#: templates/book.html:147
+msgid "subscribe to book RSS feed"
+msgstr ""
+
+#: templates/book.html:147 templates/index.html:115
+msgid "subscribe to the questions feed"
+msgstr ""
+
+#: templates/close.html:6 templates/close.html.py:16
+msgid "Close question"
+msgstr ""
+
+#: templates/close.html:19
+msgid "Close the question"
+msgstr ""
+
+#: templates/close.html:25
+msgid "Reasons"
+msgstr ""
+
+#: templates/close.html:28
+msgid "OK to close"
+msgstr ""
+
+#: templates/footer.html:5
+msgid "About us"
+msgstr ""
+
+#: templates/footer.html:6 templates/header.html:13 templates/index.html:83
+msgid "faq"
+msgstr ""
+
+#: templates/footer.html:8
+msgid "Contact"
+msgstr ""
+
+#: templates/footer.html:9
+msgid "Privacy"
+msgstr ""
+
+#: templates/footer.html:10
+msgid "Feedback"
+msgstr ""
+
+#: templates/header.html:8
+msgid "logout"
+msgstr ""
+
+#: templates/header.html:10 templates/authopenid/signup.html:39
+msgid "login"
+msgstr ""
+
+#: templates/header.html:12 templates/index.html:82
+msgid "about"
+msgstr ""
+
+#: templates/header.html:23
+msgid "back to home page"
+msgstr ""
+
+#: templates/header.html:29 templates/header.html.py:60
+msgid "questions"
+msgstr ""
+
+#: templates/header.html:31 templates/header.html.py:62
+msgid "users"
+msgstr ""
+
+#: templates/header.html:32
+msgid "books"
+msgstr ""
+
+#: templates/header.html:34 templates/index.html:120
+msgid "unanswered questions"
+msgstr ""
+
+#: templates/header.html:38
+msgid "my profile"
+msgstr ""
+
+#: templates/header.html:42
+msgid "ask a question"
+msgstr ""
+
+#: templates/header.html:57
+msgid "search"
+msgstr ""
+
+#: templates/index.html:6
+msgid "Home"
+msgstr ""
+
+#: templates/index.html:21
+msgid "Questions"
+msgstr ""
+
+#: templates/index.html:23
+msgid "last updated questions"
+msgstr ""
+
+#: templates/index.html:23 templates/unanswered.html:20
+msgid "newest"
+msgstr ""
+
+#: templates/index.html:24
+msgid "hottest questions"
+msgstr ""
+
+#: templates/index.html:24
+msgid "hottest"
+msgstr ""
+
+#: templates/index.html:25
+msgid "most voted questions"
+msgstr ""
+
+#: templates/index.html:25
+msgid "most voted"
+msgstr ""
+
+#: templates/index.html:26
+msgid "all questions"
+msgstr ""
+
+#: templates/index.html:46 templates/unanswered.html:36
+#: templates/users_questions.html:35
+msgid "answers"
+msgstr ""
+
+#: templates/index.html:68 templates/question.html:112
+#: templates/question.html.py:479 templates/tags.html:46
+#: templates/unanswered.html:75 templates/unanswered.html.py:109
+#: templates/users_questions.html:52
+msgid "see questions tagged"
+msgstr ""
+
+#: templates/index.html:79
+msgid "welcome to website"
+msgstr ""
+
+#: templates/index.html:88
+msgid "Recent tags"
+msgstr ""
+
+#: templates/index.html:93
+#, python-format
+msgid "see questions tagged '%(tagname)s'"
+msgstr ""
+
+#: templates/index.html:96 templates/index.html.py:120
+msgid "popular tags"
+msgstr ""
+
+#: templates/index.html:100
+msgid "Recent awards"
+msgstr ""
+
+#: templates/index.html:106
+msgid "given to"
+msgstr ""
+
+#: templates/index.html:111
+msgid "all awards"
+msgstr ""
+
+#: templates/index.html:115
+msgid "subscribe to last 30 questions by RSS"
+msgstr ""
+
+#: templates/index.html:120
+msgid "Still looking for more? See"
+msgstr ""
+
+#: templates/index.html:120
+msgid "complete list of quesionts"
+msgstr ""
+
+#: templates/index.html:120
+msgid "or"
+msgstr ""
+
+#: templates/index.html:120
+msgid "."
+msgstr ""
+
+#: templates/index.html:120
+msgid "Please help us answer"
+msgstr ""
+
+#: templates/logout.html:6 templates/logout.html.py:17
+msgid "Logout"
+msgstr ""
+
+#: templates/logout.html:20
+msgid ""
+"As a registered user you can login with your OpenID, log out of the site or "
+"permanently remove your account."
+msgstr ""
+
+#: templates/logout.html:21
+msgid "Logout now"
+msgstr ""
+
+#: templates/pagesize.html:5
+msgid "Size per page:"
+msgstr ""
+
+#: templates/paginator.html:5
+msgid "Previous"
+msgstr ""
+
+#: templates/privacy.html:6 templates/privacy.html.py:11
+msgid "Privacy policy"
+msgstr ""
+
+#: templates/privacy.html:15
+msgid "general message about privacy"
+msgstr ""
+
+#: templates/privacy.html:18
+msgid "Site Visitors"
+msgstr ""
+
+#: templates/privacy.html:20
+msgid "what technical information is collected about visitors"
+msgstr ""
+
+#: templates/privacy.html:23
+msgid "Personal Information"
+msgstr ""
+
+#: templates/privacy.html:25
+msgid "details on personal information policies"
+msgstr ""
+
+#: templates/privacy.html:28
+msgid "Other Services"
+msgstr ""
+
+#: templates/privacy.html:30
+msgid "details on sharing data with third parties"
+msgstr ""
+
+#: templates/privacy.html:35
+msgid "cookie policy details"
+msgstr ""
+
+#: templates/privacy.html:37
+msgid "Policy Changes"
+msgstr ""
+
+#: templates/privacy.html:38
+msgid "how privacy policies can be changed"
+msgstr ""
+
+#: templates/question.html:66 templates/question.html.py:78
+msgid "i like this post (click again to cancel)"
+msgstr ""
+
+#: templates/question.html:68 templates/question.html.py:80
+#: templates/question.html:273
+msgid "current number of votes"
+msgstr ""
+
+#: templates/question.html:73 templates/question.html.py:84
+msgid "i dont like this post (click again to cancel)"
+msgstr ""
+
+#: templates/question.html:90
+msgid "mark this question as favorite (click again to cancel)"
+msgstr ""
+
+#: templates/question.html:96
+msgid "remove favorite mark from this question (click again to restore mark)"
+msgstr ""
+
+#: templates/question.html:121 templates/question.html.py:304
+#: templates/revisions_answer.html:53 templates/revisions_question.html:53
+msgid "edit"
+msgstr ""
+
+#: templates/question.html:125 templates/question.html.py:314
+msgid "delete"
+msgstr ""
+
+#: templates/question.html:130
+msgid "reopen"
+msgstr ""
+
+#: templates/question.html:135
+msgid "close"
+msgstr ""
+
+#: templates/question.html:141 templates/question.html.py:327
+msgid ""
+"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
+msgstr ""
+
+#: templates/question.html:142 templates/question.html.py:328
+msgid "flag offensive"
+msgstr ""
+
+#: templates/question.html:154 templates/question.html.py:337
+#: templates/revisions_answer.html:65 templates/revisions_question.html:65
+msgid "updated"
+msgstr ""
+
+#: templates/question.html:203 templates/question.html.py:384
+#: templates/revisions_answer.html:63 templates/revisions_question.html:63
+msgid "asked"
+msgstr ""
+
+#: templates/question.html:233 templates/question.html.py:411
+msgid "comments"
+msgstr ""
+
+#: templates/question.html:234 templates/question.html.py:412
+msgid "add comment"
+msgstr ""
+
+#: templates/question.html:247
+#, python-format
+msgid ""
+"The question has been closed for the following reason \"%(question."
+"get_close_reason_display)s\" by"
+msgstr ""
+
+#: templates/question.html:249
+#, python-format
+msgid "close date %(question.closed_at)s"
+msgstr ""
+
+#: templates/question.html:256 templates/questions.html:44
+#: templates/user_stats.html:28
+msgid "Answers"
+msgstr ""
+
+#: templates/question.html:258
+msgid "oldest answers will be shown first"
+msgstr ""
+
+#: templates/question.html:258
+msgid "oldest answers"
+msgstr ""
+
+#: templates/question.html:259
+msgid "newest answers will be shown first"
+msgstr ""
+
+#: templates/question.html:259
+msgid "newest answers"
+msgstr ""
+
+#: templates/question.html:260
+msgid "most voted answers will be shown first"
+msgstr ""
+
+#: templates/question.html:260
+msgid "popular answers"
+msgstr ""
+
+#: templates/question.html:272
+msgid "i like this answer (click again to cancel)"
+msgstr ""
+
+#: templates/question.html:278
+msgid "i dont like this answer (click again to cancel)"
+msgstr ""
+
+#: templates/question.html:284
+msgid "mark this answer as favorite (click again to undo)"
+msgstr ""
+
+#: templates/question.html:289
+msgid "the author of the question has selected this answer as correct"
+msgstr ""
+
+#: templates/question.html:311
+msgid "undelete"
+msgstr ""
+
+#: templates/question.html:321
+msgid "answer permanent link"
+msgstr ""
+
+#: templates/question.html:322
+msgid "permanent link"
+msgstr ""
+
+#: templates/question.html:436
+msgid "Your answer"
+msgstr ""
+
+#: templates/question.html:460
+msgid "Answer the question"
+msgstr ""
+
+#: templates/question.html:462
+msgid "Login to answer"
+msgstr ""
+
+#: templates/question.html:474
+msgid "Question tags"
+msgstr ""
+
+#: templates/question.html:484
+msgid "question asked"
+msgstr ""
+
+#: templates/question.html:484 templates/question.html.py:490
+#: templates/user_info.html:51
+msgid "ago"
+msgstr ""
+
+#: templates/question.html:487
+msgid "question was seen"
+msgstr ""
+
+#: templates/question.html:487
+msgid "times"
+msgstr ""
+
+#: templates/question.html:490
+msgid "last updated"
+msgstr ""
+
+#: templates/question.html:495
+msgid "Related questions"
+msgstr ""
+
+#: templates/question_edit.html:4 templates/question_edit.html.py:65
+msgid "Edit question"
+msgstr ""
+
+#: templates/question_edit_tips.html:4
+msgid "question tips"
+msgstr ""
+
+#: templates/question_edit_tips.html:7
+msgid "please ask a relevant question"
+msgstr ""
+
+#: templates/question_edit_tips.html:10
+msgid "please try provide enough details"
+msgstr ""
+
+#: templates/question_edit_tips.html:13
+msgid "be clear and concise"
+msgstr ""
+
+#: templates/question_edit_tips.html:16
+msgid "see frequently asked questions"
+msgstr ""
+
+#: templates/question_edit_tips.html:22
+msgid "Markdown tips"
+msgstr ""
+
+#: templates/question_edit_tips.html:25
+msgid "*italic* or __italic__"
+msgstr ""
+
+#: templates/question_edit_tips.html:28
+msgid "**bold** or __bold__"
+msgstr ""
+
+#: templates/question_edit_tips.html:31
+msgid "link"
+msgstr ""
+
+#: templates/question_edit_tips.html:31 templates/question_edit_tips.html:36
+msgid "text"
+msgstr ""
+
+#: templates/question_edit_tips.html:36
+msgid "image"
+msgstr ""
+
+#: templates/question_edit_tips.html:40
+msgid "numbered list:"
+msgstr ""
+
+#: templates/question_edit_tips.html:45
+msgid "basic HTML tags are also supported"
+msgstr ""
+
+#: templates/question_edit_tips.html:48
+msgid "learn more about Markdown"
+msgstr ""
+
+#: templates/questions.html:6
+msgid "Question list"
+msgstr ""
+
+#: templates/questions.html:22
+msgid "Tagged questions"
+msgstr ""
+
+#: templates/questions.html:22
+msgid "Query result"
+msgstr ""
+
+#: templates/questions.html:22
+msgid "All questions"
+msgstr ""
+
+#: templates/questions.html:24
+msgid "New questions"
+msgstr ""
+
+#: templates/questions.html:24
+msgid "Newest"
+msgstr ""
+
+#: templates/questions.html:25
+msgid "Newest updated questions"
+msgstr ""
+
+#: templates/questions.html:25
+msgid "Active"
+msgstr ""
+
+#: templates/questions.html:26
+msgid "Questions with most answers"
+msgstr ""
+
+#: templates/questions.html:26
+msgid "Hottest"
+msgstr ""
+
+#: templates/questions.html:27
+msgid "Questions with most votes"
+msgstr ""
+
+#: templates/questions.html:27
+msgid "Best"
+msgstr ""
+
+#: templates/questions.html:45
+msgid "Votes"
+msgstr ""
+
+#: templates/questions.html:46
+msgid "Visits"
+msgstr ""
+
+#: templates/questions.html:57 templates/questions.html.py:69
+msgid "Community wiki"
+msgstr ""
+
+#: templates/questions.html:83
+msgid "Browse questions with tag of "
+msgstr ""
+
+#: templates/questions.html:125 templates/unanswered.html:105
+msgid "Related tags"
+msgstr ""
+
+#: templates/reopen.html:6 templates/reopen.html.py:16
+msgid "Reopen question"
+msgstr ""
+
+#: templates/reopen.html:19
+msgid "Open the previously closed question"
+msgstr ""
+
+#: templates/reopen.html:22
+msgid "The question was closed for the following reason "
+msgstr ""
+
+#: templates/reopen.html:22
+msgid "reason - leave blank in english"
+msgstr ""
+
+#: templates/reopen.html:22
+msgid "on "
+msgstr ""
+
+#: templates/reopen.html:22
+msgid "date closed"
+msgstr ""
+
+#: templates/reopen.html:29
+msgid "Reopen this question"
+msgstr ""
+
+#: templates/revisions_answer.html:7 templates/revisions_answer.html.py:36
+#: templates/revisions_question.html:8 templates/revisions_question.html:36
+msgid "Revision history"
+msgstr ""
+
+#: templates/tags.html:5 templates/tags.html.py:28
+msgid "Tag list"
+msgstr ""
+
+#: templates/tags.html:30
+msgid "sorted alphabetically"
+msgstr ""
+
+#: templates/tags.html:30
+msgid "by name"
+msgstr ""
+
+#: templates/tags.html:31
+msgid "sorted by frequency of tag use"
+msgstr ""
+
+#: templates/tags.html:31
+msgid "by popularity"
+msgstr ""
+
+#: templates/tags.html:37
+msgid "All tags matching query"
+msgstr ""
+
+#: templates/tags.html:37
+msgid "all tags - make this empty in english"
+msgstr ""
+
+#: templates/tags.html:40
+msgid "Nothing found"
+msgstr ""
+
+#: templates/unanswered.html:7 templates/unanswered.html.py:18
+msgid "Unanswered questions"
+msgstr ""
+
+#: templates/unanswered.html:20
+msgid "most recently asked questions"
+msgstr ""
+
+#: templates/unanswered.html:97
+#, python-format
+msgid "have %(num_q)s unanswered questions"
+msgstr ""
+
+#: templates/unanswered.html:99
+msgid "Have a total of"
+msgstr ""
+
+#: templates/user_edit.html:6
+msgid "Edit user profile"
+msgstr ""
+
+#: templates/user_edit.html:19
+msgid "edit profile"
+msgstr ""
+
+#: templates/user_edit.html:31
+msgid "image associated with your email address"
+msgstr ""
+
+#: templates/user_edit.html:31
+msgid "avatar"
+msgstr ""
+
+#: templates/user_edit.html:36 templates/user_info.html:31
+msgid "Registered user"
+msgstr ""
+
+#: templates/user_edit.html:82
+msgid "Update"
+msgstr ""
+
+#: templates/user_info.html:34
+msgid "update profile"
+msgstr ""
+
+#: templates/user_info.html:40
+msgid "real name"
+msgstr ""
+
+#: templates/user_info.html:45
+msgid "member for"
+msgstr ""
+
+#: templates/user_info.html:50
+msgid "last seen"
+msgstr ""
+
+#: templates/user_info.html:56
+msgid "user website"
+msgstr ""
+
+#: templates/user_info.html:62
+msgid "location"
+msgstr ""
+
+#: templates/user_info.html:69
+msgid "age"
+msgstr ""
+
+#: templates/user_info.html:70
+msgid "age unit"
+msgstr ""
+
+#: templates/user_info.html:75
+msgid "todays unused votes"
+msgstr ""
+
+#: templates/user_info.html:76
+msgid "votes left"
+msgstr ""
+
+#: templates/user_stats.html:15
+msgid "User questions"
+msgstr ""
+
+#: templates/user_stats.html:37
+#, python-format
+msgid "the answer has been voted for %(vote_count)s times"
+msgstr ""
+
+#: templates/user_stats.html:37
+msgid "this answer has been selected as correct"
+msgstr ""
+
+#: templates/user_stats.html:43
+#, python-format
+msgid "the answer has been commented %(answered_question.comment_count)s times"
+msgstr ""
+
+#: templates/user_stats.html:56
+msgid "votes total"
+msgstr ""
+
+#: templates/user_stats.html:65
+msgid "user has voted up this many times"
+msgstr ""
+
+#: templates/user_stats.html:70
+msgid "user voted down this many times"
+msgstr ""
+
+#: templates/user_stats.html:84
+msgid "Tags"
+msgstr ""
+
+#: templates/user_stats.html:94
+#, python-format
+msgid "see other questions tagged '%(tag)s' "
+msgstr ""
+
+#: templates/user_tabs.html:7
+msgid "User profile"
+msgstr ""
+
+#: templates/user_tabs.html:16
+msgid "graph of user reputation"
+msgstr ""
+
+#: templates/user_tabs.html:17
+msgid "reputation history"
+msgstr ""
+
+#: templates/user_tabs.html:24
+msgid "favorites"
+msgstr ""
+
+#: templates/user_tabs.html:29
+msgid "settings"
+msgstr ""
+
+#: templates/user_votes.html:14
+msgid "upvote"
+msgstr ""
+
+#: templates/user_votes.html:16
+msgid "downvote"
+msgstr ""
+
+#: templates/users.html:5 templates/users.html.py:23
+msgid "Users"
+msgstr ""
+
+#: templates/users.html:26
+msgid "recent"
+msgstr ""
+
+#: templates/users.html:27
+msgid "oldest"
+msgstr ""
+
+#: templates/users.html:28
+msgid "by username"
+msgstr ""
+
+#: templates/users.html:34
+#, python-format
+msgid "users matching query %(suser)s:"
+msgstr ""
+
+#: templates/users.html:38
+msgid "Nothing found."
+msgstr ""
+
+#: templates/users_questions.html:11
+msgid "this questions was selected as favorite"
+msgstr ""
+
+#: templates/users_questions.html:33
+msgid "this answer has been accepted to be correct"
+msgstr ""
+
+#: templates/authopenid/changeemail.html:6
+msgid "Account: change email"
+msgstr ""
+
+#: templates/authopenid/changeemail.html:9
+msgid ""
+"This is where you can change the email address associated with your account. "
+"Please keep this email address up to date so we can send you a password-"
+"reset email if you request one."
+msgstr ""
+
+#: templates/authopenid/changeemail.html:11
+#: templates/authopenid/changeopenid.html:13
+#: templates/authopenid/changepw.html:18 templates/authopenid/delete.html:14
+#: templates/authopenid/delete.html:24
+msgid "Please correct errors below:"
+msgstr ""
+
+#: templates/authopenid/changeemail.html:28
+msgid "Email"
+msgstr ""
+
+#: templates/authopenid/changeemail.html:29
+#: templates/authopenid/signin.html:60
+msgid "Password"
+msgstr ""
+
+#: templates/authopenid/changeemail.html:31
+msgid "Change email"
+msgstr ""
+
+#: templates/authopenid/changeopenid.html:7
+msgid "Account: change OpenID URL"
+msgstr ""
+
+#: templates/authopenid/changeopenid.html:11
+msgid ""
+"This is where you can change your OpenID URL. Make sure you remember it!"
+msgstr ""
+
+#: templates/authopenid/changeopenid.html:28
+msgid "OpenID URL:"
+msgstr ""
+
+#: templates/authopenid/changeopenid.html:29
+msgid "Change OpenID"
+msgstr ""
+
+#: templates/authopenid/changepw.html:13
+msgid "Account: change password"
+msgstr ""
+
+#: templates/authopenid/changepw.html:16
+msgid "This is where you can change your password. Make sure you remember it!"
+msgstr ""
+
+#: templates/authopenid/changepw.html:26
+msgid "Current password"
+msgstr ""
+
+#: templates/authopenid/changepw.html:27
+msgid "New password"
+msgstr ""
+
+#: templates/authopenid/changepw.html:28
+msgid "New password again"
+msgstr ""
+
+#: templates/authopenid/changepw.html:29 templates/authopenid/settings.html:28
+msgid "Change password"
+msgstr ""
+
+#: templates/authopenid/complete.html:4
+msgid "Connect your OpenID with this site"
+msgstr ""
+
+#: templates/authopenid/complete.html:7
+msgid "Connect your OpenID with your account on this site"
+msgstr ""
+
+#: templates/authopenid/complete.html:10
+msgid "Your OpenID is accepted. Please complete this to finish registration."
+msgstr ""
+
+#: templates/authopenid/complete.html:11
+msgid "This account already exists, please use another."
+msgstr ""
+
+#: templates/authopenid/complete.html:16 templates/authopenid/complete.html:29
+#: templates/authopenid/signin.html:43
+msgid "Sorry, looks like we have some errors:"
+msgstr ""
+
+#: templates/authopenid/complete.html:45
+msgid "New account"
+msgstr ""
+
+#: templates/authopenid/complete.html:46
+msgid "User name (<i>will be shown to others, cannot be modified</i>)"
+msgstr ""
+
+#: templates/authopenid/complete.html:47
+msgid "Email (<i>not shared with anyone</i>)"
+msgstr ""
+
+#: templates/authopenid/complete.html:48
+msgid "create account"
+msgstr ""
+
+#: templates/authopenid/complete.html:56
+msgid "Existing account"
+msgstr ""
+
+#: templates/authopenid/complete.html:57
+msgid "user name"
+msgstr ""
+
+#: templates/authopenid/complete.html:58
+msgid "password"
+msgstr ""
+
+#: templates/authopenid/complete.html:61
+msgid "Register"
+msgstr ""
+
+#: templates/authopenid/complete.html:62 templates/authopenid/signin.html:62
+msgid "Forgot your password?"
+msgstr ""
+
+#: templates/authopenid/delete.html:8
+msgid "Account: delete account"
+msgstr ""
+
+#: templates/authopenid/delete.html:12
+msgid ""
+"Note: After deleting your account, anyone will be able to register this "
+"username."
+msgstr ""
+
+#: templates/authopenid/delete.html:16
+msgid "Check confirm box, if you want delete your account."
+msgstr ""
+
+#: templates/authopenid/delete.html:19
+msgid "Password:"
+msgstr ""
+
+#: templates/authopenid/delete.html:31
+msgid "I am sure I want to delete my account."
+msgstr ""
+
+#: templates/authopenid/delete.html:32
+msgid "Password/OpenID URL"
+msgstr ""
+
+#: templates/authopenid/delete.html:32
+msgid "(required for your security)"
+msgstr ""
+
+#: templates/authopenid/delete.html:34
+msgid "Delete account permanently"
+msgstr ""
+
+#: templates/authopenid/sendpw.html:3 templates/authopenid/sendpw.html.py:7
+msgid "Send new password"
+msgstr ""
+
+#: templates/authopenid/sendpw.html:11
+msgid "Lost your password? No problem - here you can reset it."
+msgstr ""
+
+#: templates/authopenid/sendpw.html:12
+msgid ""
+"Please enter your username below and new password will be sent to your "
+"registered e-mail"
+msgstr ""
+
+#: templates/authopenid/sendpw.html:29
+msgid "Reset password"
+msgstr ""
+
+#: templates/authopenid/sendpw.html:29
+msgid "return to login"
+msgstr ""
+
+#: templates/authopenid/sendpw.html:32
+msgid ""
+"Note: your new password will be activated only after you click the "
+"activation link in the email message"
+msgstr ""
+
+#: templates/authopenid/settings.html:29
+msgid "Give your account a new password."
+msgstr ""
+
+#: templates/authopenid/settings.html:30
+msgid "Change email "
+msgstr ""
+
+#: templates/authopenid/settings.html:31
+msgid "Add or update the email address associated with your account."
+msgstr ""
+
+#: templates/authopenid/settings.html:34
+msgid "Change openid associated to your account"
+msgstr ""
+
+#: templates/authopenid/settings.html:37
+msgid "Delete account"
+msgstr ""
+
+#: templates/authopenid/settings.html:38
+msgid "Erase your username and all your data from website"
+msgstr ""
+
+#: templates/authopenid/signin.html:3 templates/authopenid/signin.html:16
+msgid "User login"
+msgstr ""
+
+#: templates/authopenid/signin.html:21
+msgid "we support two login modes"
+msgstr ""
+
+#: templates/authopenid/signin.html:26 templates/authopenid/signup.html:49
+msgid "Login with your OpenID"
+msgstr ""
+
+#: templates/authopenid/signin.html:28
+msgid "select openid provider"
+msgstr ""
+
+#: templates/authopenid/signin.html:32
+msgid "verify openid link and login"
+msgstr ""
+
+#: templates/authopenid/signin.html:58
+msgid "Use login name and password"
+msgstr ""
+
+#: templates/authopenid/signin.html:59
+msgid "Login name"
+msgstr ""
+
+#: templates/authopenid/signin.html:63
+msgid "Create new acccount"
+msgstr ""
+
+#: templates/authopenid/signin.html:72
+msgid "Why use OpenID?"
+msgstr ""
+
+#: templates/authopenid/signin.html:76
+msgid "with openid it is easier"
+msgstr ""
+
+#: templates/authopenid/signin.html:79
+msgid "reuse openid"
+msgstr ""
+
+#: templates/authopenid/signin.html:82
+msgid "openid is widely adopted"
+msgstr ""
+
+#: templates/authopenid/signin.html:85
+msgid "openid is supported open standard"
+msgstr ""
+
+#: templates/authopenid/signin.html:89
+msgid "Find out more"
+msgstr ""
+
+#: templates/authopenid/signin.html:90
+msgid "Get OpenID"
+msgstr ""
+
+#: templates/authopenid/signup.html:2 templates/authopenid/signup.html.py:6
+msgid "Signup"
+msgstr ""
+
+#: templates/authopenid/signup.html:10
+msgid ""
+"We support two types of user registration: conventional username/password, "
+"and"
+msgstr ""
+
+#: templates/authopenid/signup.html:10
+msgid "the OpenID method"
+msgstr ""
+
+#: templates/authopenid/signup.html:15
+msgid "Sorry, looks like we have some errors"
+msgstr ""
+
+#: templates/authopenid/signup.html:33
+msgid "Conventional registration"
+msgstr ""
+
+#: templates/authopenid/signup.html:34
+msgid "choose a user name"
+msgstr ""
+
+#: templates/authopenid/signup.html:40
+msgid "back to login"
+msgstr ""
+
+#: templates/authopenid/signup.html:46
+msgid "Register with your OpenID"
+msgstr ""
diff --git a/locale/zh_CN/LC_MESSAGES/django.mo b/locale/zh_CN/LC_MESSAGES/django.mo
index fafeef89..3d45237b 100644
--- a/locale/zh_CN/LC_MESSAGES/django.mo
+++ b/locale/zh_CN/LC_MESSAGES/django.mo
Binary files differ
diff --git a/locale/zh_CN/LC_MESSAGES/django.po b/locale/zh_CN/LC_MESSAGES/django.po
index 176e41dc..ba32e84a 100644
--- a/locale/zh_CN/LC_MESSAGES/django.po
+++ b/locale/zh_CN/LC_MESSAGES/django.po
@@ -1,79 +1,113 @@
-# Chinese translations for CNProg.com
-# Copyright (C) 2009
-# This file is distributed under the same license as the CNPROG package.
-# Mike Chen <chagel@gmail.com>, 2009.
-#
-#, fuzzy
+# author Evgeny Fadeev (evgeny.fadeev@gmail.com)
+# site-specific messages
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-07-15 13:53+0000\n"
+"POT-Creation-Date: 2009-07-28 15:57+0000\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"
#: settings.py:12
+#, fuzzy
msgid "account/"
-msgstr ""
+msgstr "新帐号"
#: settings.py:12 django_authopenid/urls.py:9 django_authopenid/urls.py:11
msgid "signin/"
msgstr ""
#: django_authopenid/forms.py:67 django_authopenid/views.py:93
+#, fuzzy
msgid "i-names are not supported"
-msgstr "i-names不支持。"
+msgstr "基本的HTML标签也是支持的"
#: django_authopenid/forms.py:102 django_authopenid/forms.py:207
msgid ""
"Usernames can only contain letters, numbers and "
"underscores"
-msgstr "用户名格式有误。只有字母,数字和下划线是允许的。"
+msgstr ""
#: django_authopenid/forms.py:109
msgid ""
"This username does not exist in our database. Please "
"choose another."
-msgstr "用户名不存在。请重新输入。"
+msgstr ""
#: django_authopenid/forms.py:126 django_authopenid/forms.py:231
msgid ""
"Please enter a valid username and password. Note that "
"both fields are case-sensitive."
-msgstr "请输入用户名和密码。注意区分大小写。"
+msgstr ""
#: django_authopenid/forms.py:130 django_authopenid/forms.py:235
msgid "This account is inactive."
-msgstr "用户已冻结。"
+msgstr ""
+
+# translation and user name validation are language-specific
+#: django_authopenid/forms.py:158
+msgid "invalid user name"
+msgstr "用户名只能包含英文字母、数字和下划线"
+
+#: django_authopenid/forms.py:160
+msgid "sorry, this name can not be used, please try another"
+msgstr "对不起,您不能注册该用户名,请换一个试试"
+
+# minimal length of user name may be language specific
+#: django_authopenid/forms.py:162
+msgid "username too short"
+msgstr "用户名太短,请使用三个或三个以上字符"
+
+#: django_authopenid/forms.py:170 django_authopenid/forms.py:171
+msgid "this name is already in use - please try anoter"
+msgstr "该用户名已被注册,请换一个试试"
#: django_authopenid/forms.py:184
+#, fuzzy
msgid ""
"This email is already registered in our database. Please "
"choose another."
-msgstr "电子邮件已被注册。请使用一个新的邮件地址。"
+msgstr "该电子邮件已被注册,请选择另一个再试。"
#: django_authopenid/forms.py:214
msgid ""
"This username don't exist. Please choose another."
-msgstr "用户名不存在"
+msgstr ""
+
+#: django_authopenid/forms.py:253
+#, fuzzy
+msgid "choose a username"
+msgstr "选择一个用户名"
+
+#: django_authopenid/forms.py:255 templates/authopenid/signup.html:36
+msgid "your email address"
+msgstr "您的电子邮件地址"
+
+#: django_authopenid/forms.py:257 templates/authopenid/signup.html:37
+msgid "choose password"
+msgstr "密码"
+
+#: django_authopenid/forms.py:259 templates/authopenid/signup.html:38
+msgid "retype password"
+msgstr "确认密码"
#: django_authopenid/forms.py:330
msgid ""
"Old password is incorrect. Please enter the correct "
"password."
-msgstr "旧密码错误。"
+msgstr ""
#: django_authopenid/forms.py:342
msgid "new passwords do not match"
-msgstr "新密码不匹配"
+msgstr ""
#: django_authopenid/forms.py:434
+#, fuzzy
msgid "Incorrect username."
-msgstr "用户名不正确"
+msgstr "选择一个用户名"
#: django_authopenid/urls.py:10
msgid "signout/"
@@ -84,455 +118,1802 @@ msgid "complete/"
msgstr ""
#: django_authopenid/urls.py:13
+#, fuzzy
msgid "register/"
-msgstr ""
+msgstr "确认"
#: django_authopenid/urls.py:14
+#, fuzzy
msgid "signup/"
-msgstr ""
+msgstr "注册帐号"
#: django_authopenid/urls.py:16
msgid "sendpw/"
msgstr ""
#: django_authopenid/urls.py:26
+#, fuzzy
msgid "delete/"
-msgstr ""
+msgstr "删除"
#: django_authopenid/views.py:99
#, python-format
msgid "非法OpenID地址: %s"
msgstr ""
-#: django_authopenid/views.py:366 templates/index.html:78
+#: django_authopenid/views.py:366
msgid "Welcome"
-msgstr "欢迎"
+msgstr ""
#: django_authopenid/views.py:456
+#, fuzzy
msgid "Password changed."
-msgstr "密码已更新。"
+msgstr "密码"
#: django_authopenid/views.py:488
msgid "Email changed."
-msgstr "邮件地址已更新。"
+msgstr ""
#: django_authopenid/views.py:519 django_authopenid/views.py:671
#, python-format
msgid "No OpenID %s found associated in our database"
-msgstr "该OpenID %s 不在系统中。"
+msgstr ""
#: django_authopenid/views.py:523 django_authopenid/views.py:678
#, python-format
msgid "The OpenID %s isn't associated to current user logged in"
-msgstr "OpenID %s 没有和当前登录用户绑定。"
+msgstr ""
#: django_authopenid/views.py:531
msgid "Email Changed."
-msgstr "邮件地址已更新。"
+msgstr ""
#: django_authopenid/views.py:606
msgid "This OpenID is already associated with another account."
-msgstr "这个OpenID已经绑定到另外一个帐号。"
+msgstr ""
#: django_authopenid/views.py:611
#, python-format
msgid "OpenID %s is now associated with your account."
-msgstr "OpenID %s 已经绑定到您的帐号。"
+msgstr ""
+# todo please check this in chinese
#: django_authopenid/views.py:681
+#, fuzzy
msgid "Account deleted."
-msgstr "帐号已删除。"
+msgstr "取消"
#: django_authopenid/views.py:721
+#, fuzzy
msgid "Request for new password"
-msgstr "找回密码"
+msgstr "重设密码"
#: django_authopenid/views.py:734
+#, fuzzy
msgid "A new password has been sent to your email address."
-msgstr "新的密码已经发送到您的邮件帐号。"
+msgstr "和您的邮件地址是绑定的"
#: django_authopenid/views.py:764
#, python-format
msgid ""
"Could not change password. Confirmation key '%s' is not "
"registered."
-msgstr "不能修改密码。确认信息 '%s' 有误。"
+msgstr ""
#: django_authopenid/views.py:773
msgid ""
"Can not change password. User don't exist anymore in our "
"database."
-msgstr "不能修改密码。用户帐号不存在。"
+msgstr ""
#: django_authopenid/views.py:782
#, python-format
msgid "Password changed for %s. You may now sign in."
-msgstr "帐号 %s 的密码已经修改。您现在可以用它来登录。"
+msgstr ""
+
+#: forum/const.py:8
+msgid "duplicate question"
+msgstr "完全重复的问题"
+
+# chinese translation is domain specific
+#: forum/const.py:9
+msgid "question if off-topic or not relevant"
+msgstr "不是编程技术问题"
+
+#: forum/const.py:10
+msgid "too subjective and argumentative"
+msgstr "太主观性、引起争吵的问题"
+
+#: forum/const.py:11
+msgid "is not an answer to the question"
+msgstr "不是一个可以回答的“问题”"
+
+#: forum/const.py:12
+msgid "the question is answered, right answer was accepted"
+msgstr "问题已经解决,已得到正确答案"
+
+#: forum/const.py:13
+msgid "problem is not reproducible or outdated"
+msgstr "已经过时、不可重现的问题"
+
+#: forum/const.py:15
+msgid "question contains offensive inappropriate, or malicious remarks"
+msgstr "恶意言论"
+
+#: forum/const.py:16
+msgid "spam or advertising"
+msgstr "垃圾广告"
+
+#: forum/const.py:56
+msgid "question"
+msgstr "提问"
+
+#: forum/const.py:57 templates/book.html:110
+msgid "answer"
+msgstr "回答"
+
+#: forum/const.py:58
+msgid "commented question"
+msgstr "评论问题"
+
+#: forum/const.py:59
+#, fuzzy
+msgid "commented answer"
+msgstr "修改回答"
+
+#: forum/const.py:60
+msgid "edited question"
+msgstr "修改问题"
+
+#: forum/const.py:61
+msgid "edited answer"
+msgstr "修改回答"
-#: forum/user.py:17
-msgid "Overview"
+#: forum/const.py:62
+msgid "received award"
+msgstr "获奖"
+
+#: forum/const.py:63
+msgid "marked best answer"
+msgstr "标记最佳答案"
+
+#: forum/const.py:64
+msgid "upvoted"
+msgstr "投赞成票"
+
+#: forum/const.py:65
+msgid "downvoted"
+msgstr "投反对票"
+
+#: forum/const.py:66
+msgid "canceled vote"
+msgstr "撤销投票"
+
+#: forum/const.py:67
+msgid "deleted question"
+msgstr "删除问题"
+
+#: forum/const.py:68
+msgid "deleted answer"
+msgstr "删除回答"
+
+#: forum/const.py:69
+msgid "marked offensive"
+msgstr "标记垃圾帖"
+
+#: forum/const.py:70
+msgid "updated tags"
+msgstr "更新标签"
+
+#: forum/const.py:71
+msgid "selected favorite"
+msgstr "收藏"
+
+#: forum/const.py:72
+msgid "completed user profile"
+msgstr "完成个人所有资料"
+
+#: forum/const.py:83
+msgid "[closed]"
+msgstr "[已关闭]"
+
+#: forum/const.py:84
+msgid "[deleted]"
+msgstr "[已删除]"
+
+#: forum/const.py:85
+msgid "initial version"
+msgstr "初始版本"
+
+#: forum/const.py:86
+msgid "retagged"
+msgstr "更新了标签"
+
+#: forum/feed.py:17
+msgid "site title"
+msgstr "CNProg.com"
+
+#: forum/feed.py:17
+msgid " - "
+msgstr "-"
+
+#: forum/feed.py:17
+msgid "site slogan"
+msgstr "程序员问答社区"
+
+#: forum/feed.py:17
+msgid "latest questions"
+msgstr "最新问题"
+
+#: forum/feed.py:20
+msgid "meta site content"
+msgstr "中国程序员的编程技术问答社区。我们做专业的、可协作编辑的技术问答社区。"
+
+#: forum/feed.py:22
+msgid "copyright message"
+msgstr "Copyright(c)2009.CNPROG.COM"
+
+#: forum/forms.py:14 templates/question_edit_tips.html:31
+#: templates/question_edit_tips.html:36
+msgid "title"
+msgstr "标题"
+
+#: forum/forms.py:15
+msgid "please enter a descriptive title for your question"
+msgstr ""
+"请输入对问题具有描述性质的标题 - “帮忙!紧急求助!”不是建议的提问方式。"
+
+#: forum/forms.py:20
+msgid "title must be > 10 characters"
+msgstr "标题的长度必须大于10"
+
+#: forum/forms.py:29
+msgid "content"
+msgstr "内容"
+
+#: forum/forms.py:35
+msgid "question content must be > 10 characters"
+msgstr "内容至少要10个字符"
+
+#: forum/forms.py:45 templates/header.html:30 templates/header.html.py:61
+msgid "tags"
+msgstr "标签"
+
+#: forum/forms.py:46
+msgid "please use space to separate tags (this enables autocomplete feature)"
+msgstr "多个标签请用空格间隔-最多5个标签。(优先使用自动匹配的英文标签。)"
+
+#: forum/forms.py:53
+msgid "tags are required"
+msgstr "标签不能为空。"
+
+#: forum/forms.py:57
+msgid "please use 5 tags or less"
+msgstr "最多只能有5个标签"
+
+#: forum/forms.py:60
+msgid "tags must be shorter than 20 characters"
+msgstr "每个标签的长度不超过20"
+
+#: forum/forms.py:64
+msgid ""
+"please use following characters in tags: letters 'a-z', numbers, and "
+"characters '.-_#'"
+msgstr "标签请使用英文字母,中文或者数字字符串(. - _ # 也可以)"
+
+# index.html
+#: forum/forms.py:74 templates/index.html:56 templates/question.html:196
+#: templates/question.html.py:377 templates/unanswered.html:48
+#: templates/unanswered.html.py:60
+msgid "community wiki"
+msgstr "社区Wiki"
+
+#: forum/forms.py:75
+msgid ""
+"if you choose community wiki option, the question and answer do not generate "
+"points and name of author will not be shown"
+msgstr "选择社区wiki模式,问答不计算积分,签名也不显示作者信息"
+
+#: forum/forms.py:84
+msgid "update summary:"
+msgstr "更新概要:"
+
+#: forum/forms.py:85
+msgid ""
+"enter a brief summary of your revision (e.g. fixed spelling, grammar, "
+"improved style, this field is optional)"
+msgstr ""
+"输入本次修改的简单概述(如:修改了别字,修正了语法,改进了样式等。非必填"
+"项。)"
+
+#: forum/forms.py:160
+msgid "this email does not have to be linked to gravatar"
+msgstr "不会公开,用于头像显示服务"
+
+#: forum/forms.py:161
+msgid "Real name"
+msgstr "真实姓名"
+
+#: forum/forms.py:162
+msgid "Website"
+msgstr "个人网站"
+
+#: forum/forms.py:163
+msgid "Location"
+msgstr "城市"
+
+#: forum/forms.py:164
+msgid "Date of birth"
+msgstr "生日"
+
+#: forum/forms.py:164
+msgid "will not be shown, used to calculate age, format: YYYY-MM-DD"
+msgstr "不会公开,只会显示您的年龄,格式为:YYYY-MM-DD"
+
+#: forum/forms.py:165 templates/authopenid/settings.html:20
+msgid "Profile"
+msgstr "个人简介"
+
+#: forum/forms.py:190 forum/forms.py:191
+msgid "this email has already been registered, please use another one"
+msgstr "该电子邮件已被注册,请选择另一个再试。"
+
+#: forum/models.py:316 templates/badges.html:50
+msgid "gold"
+msgstr "金牌"
+
+#: forum/models.py:317 templates/badges.html:58
+msgid "silver"
+msgstr "银牌"
+
+#: forum/models.py:318 templates/badges.html:65
+msgid "bronze"
+msgstr ""
+
+#: forum/user.py:17 templates/user_tabs.html:7
+msgid "overview"
msgstr "概览"
#: forum/user.py:18
-msgid "User overview"
+#, fuzzy
+msgid "user profile"
msgstr "用户概览"
#: forum/user.py:19
-msgid "Overview - User Profile"
-msgstr "概览-用户资料"
+#, fuzzy
+msgid "user profile overview"
+msgstr "用户概览"
-#: forum/user.py:25
-msgid "Recent"
+#: forum/user.py:25 templates/user_tabs.html:9
+msgid "recent activity"
msgstr "最近活动"
#: forum/user.py:26
-msgid "Recent activities"
-msgstr "用户最近活动情况"
+#, fuzzy
+msgid "recent user activity"
+msgstr "最近活动"
#: forum/user.py:27
-msgid "Recent - User Profile"
-msgstr "最近活动-用户资料"
+#, fuzzy
+msgid "profile - recent activity"
+msgstr "最近活动"
-#: forum/user.py:34
-msgid "Response"
+#: forum/user.py:34 templates/user_tabs.html:13
+msgid "responses"
msgstr "回应"
-#: forum/user.py:35
-msgid "Responses from others"
-msgstr "其他用户的回答和评论"
+#: forum/user.py:35 templates/user_tabs.html:12
+msgid "comments and answers to others questions"
+msgstr "其他用户的回复和评论"
#: forum/user.py:36
-msgid "Response - User Profile"
-msgstr "回应-用户资料"
+msgid "profile - responses"
+msgstr "回应 - 用户资料"
-#: forum/user.py:43
-msgid "Reputation"
+#: forum/user.py:43 templates/user_info.html:23 templates/users.html:25
+msgid "reputation"
msgstr "积分"
#: forum/user.py:44
-msgid "Community reputation"
-msgstr "社区积分"
+msgid "user reputation in the community"
+msgstr "用户社区积分"
#: forum/user.py:45
-msgid "Reputation - User Profile"
-msgstr "积分-用户资料"
+msgid "profile - user reputation"
+msgstr "积分 - 用户资料"
#: forum/user.py:51
-msgid "Favorites"
+#, fuzzy
+msgid "favorite questions"
msgstr "收藏"
#: forum/user.py:52
-msgid "User's favorite questions"
+msgid "users favorite questions"
msgstr "用户收藏的问题"
#: forum/user.py:53
-msgid "Favorites - User Profile"
-msgstr "收藏-用户资料"
+msgid "profile - favorite questions"
+msgstr "收藏 - 用户资料"
-#: forum/user.py:60 templates/index.html:46 templates/questions.html:45
-msgid "Votes"
+#: forum/user.py:60 templates/user_tabs.html:20
+msgid "casted votes"
msgstr "投票"
-#: forum/user.py:61
-msgid "Votes history"
-msgstr "用户投票历史"
+#: forum/user.py:61 templates/user_tabs.html:20
+msgid "user vote record"
+msgstr "用户所有投票"
#: forum/user.py:62
-msgid "Votes - User Profile"
-msgstr "投票-用户资料"
+msgid "profile - votes"
+msgstr "投票 - 用户资料"
#: forum/user.py:69
-msgid "Preferences"
+msgid "preferences"
msgstr "设置"
-#: forum/user.py:70
-msgid "User preferences"
-msgstr "用户参数设置"
+#: forum/user.py:70 templates/user_tabs.html:28
+msgid "user preference settings"
+msgstr "用户参数的设置"
#: forum/user.py:71
-msgid "Preferences - User Profile"
-msgstr "设置-用户资料"
+msgid "profile - user preferences"
+msgstr "设置 - 用户资料"
-#: templates/badges.html:5 templates/badges.html.py:16
-#: templates/header.html:31
-msgid "Badges"
+#: forum/views.py:1726
+msgid "uploading images is limited to users with >60 reputation points"
+msgstr "上传图片只限于积分+60以上注册用户!"
+
+# todo take these out of settings
+#: forum/views.py:1728
+msgid "allowed file types are 'jpg', 'jpeg', 'gif', 'bmp', 'png', 'tiff'"
+msgstr "只允许上传'jpg', 'jpeg', 'gif', 'bmp', 'png', 'tiff'类型的文件!"
+
+#: forum/views.py:1730
+#, python-format
+msgid "maximum upload file size is %sK"
+msgstr "只允许上传%sK大小的文件!"
+
+#: forum/views.py:1732
+#, fuzzy, python-format
+msgid ""
+"Error uploading file. Please contact the site administrator. Thank you. %s"
+msgstr "在文件上传过程中产生了错误,请联系管理员,谢谢^_^"
+
+#: forum/templatetags/extra_tags.py:139 forum/templatetags/extra_tags.py:168
+#: templates/header.html:33
+msgid "badges"
msgstr "奖牌榜"
-#: templates/base.html:53 templates/base_content.html:52
-msgid "Congratulations! You have new badges: "
-msgstr "恭喜您被授予奖牌:"
+#: forum/templatetags/extra_tags.py:140 forum/templatetags/extra_tags.py:167
+#, fuzzy
+msgid "reputation points"
+msgstr "积分"
+
+#: forum/templatetags/extra_tags.py:221
+#, fuzzy
+msgid " ago"
+msgstr "前"
+
+#: templates/404.html:24
+msgid "Sorry, could not find the page you requested."
+msgstr "对不起,没有找到您请求的页面!"
+
+#: templates/404.html:26
+msgid "This might have happened for the following reasons:"
+msgstr "有可能是以下原因导致:"
+
+#: templates/404.html:28
+msgid "this question or answer has been deleted;"
+msgstr "你正在查看的问题或者回答已经被删除;"
+
+#: templates/404.html:29
+msgid "url has error - please check it;"
+msgstr "请求的地址有误 - 请核实原始URL地址;"
+
+#: templates/404.html:30
+msgid ""
+"the page you tried to visit is protected or you don't have sufficient "
+"points, see"
+msgstr "访问的页面被保护或你的积分不够,参见"
+
+#: templates/404.html:31
+msgid "if you believe this error 404 should not have occured, please"
+msgstr "如果你确信不该出现404错误,请"
+
+#: templates/404.html:32
+msgid "report this problem"
+msgstr "报告这个问题"
+
+#: templates/404.html:41 templates/500.html:27
+msgid "back to previous page"
+msgstr "返回前页"
+
+#: templates/404.html:42
+msgid "see all questions"
+msgstr "查看最新问题"
+
+#: templates/404.html:43
+msgid "see all tags"
+msgstr "查看标签列表"
+
+#: templates/500.html:24
+msgid "system error log is recorded, error will be fixed as soon as possible"
+msgstr ""
+
+#: templates/500.html:25
+msgid "please report the error to the site administrators if you wish"
+msgstr ""
+
+#: templates/500.html:28
+#, fuzzy
+msgid "see latest questions"
+msgstr "最新问题"
+
+#: templates/500.html:29
+#, fuzzy
+msgid "see tags"
+msgstr "标记垃圾帖"
+
+#: templates/answer_edit.html:4 templates/answer_edit.html.py:47
+msgid "Edit answer"
+msgstr "修改回答"
+
+#: templates/answer_edit.html:24 templates/answer_edit.html.py:27
+#: templates/ask.html:25 templates/ask.html.py:28 templates/question.html:37
+#: templates/question.html.py:40 templates/question_edit.html:27
+msgid "hide preview"
+msgstr "禁用预览"
+
+#: templates/answer_edit.html:27 templates/ask.html:28
+#: templates/question.html:40 templates/question_edit.html:27
+msgid "show preview"
+msgstr "启用预览"
+
+#: templates/answer_edit.html:47 templates/question_edit.html:65
+#: templates/revisions_answer.html:36 templates/revisions_question.html:36
+msgid "back"
+msgstr "返回"
+
+#: templates/answer_edit.html:52 templates/question_edit.html:70
+#: templates/revisions_answer.html:47 templates/revisions_question.html:47
+msgid "revision"
+msgstr "版本"
+
+#: templates/answer_edit.html:55 templates/question_edit.html:74
+msgid "select revision"
+msgstr "选择版本"
+
+#: templates/answer_edit.html:62 templates/ask.html:81
+#: templates/question.html:447 templates/question_edit.html:91
+msgid "Toggle the real time Markdown editor preview"
+msgstr "打开或者关闭Markdown编辑器的实时预览"
+
+#: templates/answer_edit.html:62 templates/ask.html:81
+#: templates/question.html:447 templates/question_edit.html:91
+msgid "toggle preview"
+msgstr "预览开关"
+
+# synonym of above in Edit question
+#: templates/answer_edit.html:73 templates/question_edit.html:119
+msgid "Save edit"
+msgstr "现在修改"
+
+#: templates/answer_edit.html:74 templates/close.html:29
+#: templates/question_edit.html:120 templates/reopen.html:30
+#: templates/user_edit.html:83
+msgid "Cancel"
+msgstr "取消"
+
+#: templates/ask.html:4 templates/ask.html.py:60
+msgid "Ask a question"
+msgstr "我要提问"
+
+#: templates/ask.html:106
+msgid "Use"
+msgstr "使用"
+
+#: templates/ask.html:106
+msgid "learn more about OpenID"
+msgstr "了解更多有关OpenID的信息"
-#: templates/base.html:54 templates/base_content.html:53
-msgid "go to see"
+#: templates/ask.html:106 templates/authopenid/signin.html:35
+#: templates/authopenid/signin.html:61
+msgid "Login"
+msgstr "登录"
+
+#: templates/ask.html:109
+#, fuzzy
+msgid "Get your own "
+msgstr "获取您自己的"
+
+#: templates/ask.html:117 templates/authopenid/sendpw.html:27
+msgid "User name"
+msgstr "您的大名"
+
+#: templates/ask.html:120
+msgid "Email: (won't be shown to anyone)"
+msgstr "电子邮件:(不会公开显示)"
+
+#: templates/ask.html:127
+msgid "Ask your question"
+msgstr "现在提问"
+
+#: templates/badge.html:6 templates/badge.html.py:17
+msgid "Badge"
+msgstr "奖牌"
+
+#: templates/badge.html:26
+msgid "The users have been awarded with badges:"
+msgstr "用户已被授予该奖牌:"
+
+#: templates/badges.html:5
+#, fuzzy
+msgid "Badges summary"
+msgstr "奖牌列表"
+
+#: templates/badges.html:16 templates/user_stats.html:113
+msgid "Badges"
+msgstr "枚奖牌"
+
+#: templates/badges.html:20
+#, fuzzy
+msgid ""
+"Community gives you awards for your questions, answers and votes. Below is "
+"the list of available badges and number of times each type of badge has been "
+"awarded."
+msgstr "这里列出社区所有的奖牌,以及到目前为此,每个奖牌被授予的用户人数。"
+
+#: templates/badges.html:47
+msgid "Community badges"
+msgstr "社区奖牌"
+
+#: templates/badges.html:53
+#, fuzzy
+msgid ""
+"Gold badge is very rare. To obtain it you have to show profound knowledge "
+"and ability in addition to actively participating in the community. Gold "
+"badge is the highest award in this community."
+msgstr ""
+"你不仅要参与社区的提问、回答、投票等活动,而且需要有高深的知识和能力才能获"
+"得。"
+
+#: templates/badges.html:61
+#, fuzzy
+msgid ""
+"Obtaining silver badge requires significant patience. If you got one, you've "
+"very significantly contributed to this community"
+msgstr "它是不同寻常的荣誉,只要你付出足够的努力就会得到。"
+
+#: templates/badges.html:64
+msgid "bronze badge: often given as a special honor"
+msgstr "铜牌:时常授予之特殊荣誉"
+
+#: templates/badges.html:68
+#, fuzzy
+msgid ""
+"If you are active in this community, you will get this medal - still it is a "
+"special honor."
+msgstr "铜牌会在你活跃于社区时产生,它相对容易获得,但也是一种特殊的荣誉。"
+
+# base_content.html
+#: templates/base.html:61 templates/base_content.html:60
+msgid "congratulations, community gave you a badge"
+msgstr "恭喜您,社区给您颁发了奖牌"
+
+#: templates/base.html:63 templates/base_content.html:62
+msgid "profile"
+msgstr "个人资料"
+
+#: templates/base_content.html:61
+msgid "see"
msgstr "查看"
-#: templates/base.html:55 templates/base_content.html:54
-#: templates/header.html:35
-msgid "Profile"
-msgstr "我的资料"
+# templates/book.html 78
+#: templates/book.html:7
+msgid "reading channel"
+msgstr "读书频道"
+
+#: templates/book.html:26
+msgid "[author]"
+msgstr "【作者】"
+
+#: templates/book.html:30
+msgid "[publisher]"
+msgstr "【出版社】"
+
+#: templates/book.html:34
+msgid "[publication date]"
+msgstr "【出版日期】"
+
+#: templates/book.html:38
+msgid "[price]"
+msgstr "【价格】"
+
+#: templates/book.html:39
+msgid "currency unit"
+msgstr ""
+
+#: templates/book.html:42
+msgid "[pages]"
+msgstr "【页数】"
-#: templates/footer.html:5 templates/header.html:10 templates/index.html:81
+#: templates/book.html:43
+msgid "pages abbreviation"
+msgstr ""
+
+#: templates/book.html:46
+msgid "[tags]"
+msgstr "【标签】"
+
+#: templates/book.html:56
+msgid "author blog"
+msgstr "作者博客"
+
+#: templates/book.html:62
+msgid "book directory"
+msgstr "书籍目录"
+
+#: templates/book.html:66
+msgid "buy online"
+msgstr "网上购买"
+
+#: templates/book.html:79
+msgid "reader questions"
+msgstr "答读者问"
+
+#: templates/book.html:82
+msgid "ask the author"
+msgstr "向作者提问"
+
+#: templates/book.html:88 templates/book.html.py:93
+#: templates/users_questions.html:17
+msgid "this question was selected as favorite"
+msgstr "这个问题被"
+
+#: templates/book.html:88 templates/book.html.py:93
+#: templates/users_questions.html:11 templates/users_questions.html.py:17
+msgid "number of times"
+msgstr "位用户收藏"
+
+#: templates/book.html:105 templates/index.html:47
+#: templates/unanswered.html:37 templates/users_questions.html:30
+msgid "votes"
+msgstr "票"
+
+#: templates/book.html:108
+msgid "the answer has been accepted to be correct"
+msgstr "有答案已被接受为正确答案"
+
+#: templates/book.html:115 templates/index.html:48
+#: templates/unanswered.html:38 templates/users_questions.html:40
+msgid "views"
+msgstr "浏览"
+
+# book.html line 123 must be empty in english
+#: templates/book.html:125 templates/index.html:68 templates/question.html:112
+#: templates/question.html.py:479 templates/tags.html:46
+#: templates/unanswered.html:75 templates/unanswered.html.py:109
+#: templates/users_questions.html:52
+msgid "using tags"
+msgstr "的问题"
+
+#: templates/book.html:147
+msgid "subscribe to book RSS feed"
+msgstr "RSS订阅该图书最新问题"
+
+#: templates/book.html:147 templates/index.html:115
+msgid "subscribe to the questions feed"
+msgstr "订阅最>新问题"
+
+# close.html
+#: templates/close.html:6 templates/close.html.py:16
+msgid "Close question"
+msgstr "关闭问题"
+
+#: templates/close.html:19
+msgid "Close the question"
+msgstr "由于以下原因,你要关闭这个问题"
+
+#: templates/close.html:25
+msgid "Reasons"
+msgstr "原因"
+
+#: templates/close.html:28
+msgid "OK to close"
+msgstr "确定关闭"
+
+#: templates/footer.html:5
+#, fuzzy
msgid "About us"
-msgstr "关于我们"
+msgstr "关于本站"
-#: templates/footer.html:6 templates/header.html:11
+#: templates/footer.html:6 templates/header.html:13 templates/index.html:83
msgid "faq"
msgstr "常见问题"
#: templates/footer.html:8
+#, fuzzy
msgid "Contact"
msgstr "联系我们"
#: templates/footer.html:9
+#, fuzzy
msgid "Privacy"
msgstr "隐私政策"
#: templates/footer.html:10
+#, fuzzy
msgid "Feedback"
-msgstr "用户反馈"
+msgstr "问题反馈"
-#: templates/header.html:6 templates/logout.html:5 templates/logout.html.py:16
-msgid "Logout"
+#: templates/header.html:8
+msgid "logout"
msgstr "退出登录"
-#: templates/header.html:8
-msgid "Login"
+#: templates/header.html:10 templates/authopenid/signup.html:39
+msgid "login"
msgstr "登录"
-#: templates/header.html:21
-msgid "link to homepage"
-msgstr "返回首页"
+# footer.html
+#: templates/header.html:12 templates/index.html:82
+msgid "about"
+msgstr "关于本站"
-#: templates/header.html:27 templates/header.html.py:56
-#: templates/index.html:21
-msgid "Questions"
-msgstr "问题"
+#: templates/header.html:23
+msgid "back to home page"
+msgstr "回到首页"
-#: templates/header.html:28 templates/header.html.py:57
-msgid "Tags"
-msgstr "标签"
+#: templates/header.html:29 templates/header.html.py:60
+msgid "questions"
+msgstr "问题"
-#: templates/header.html:29 templates/header.html.py:58
-msgid "Users"
+#: templates/header.html:31 templates/header.html.py:62
+msgid "users"
msgstr "用户"
-#: templates/header.html:30
-msgid "Books"
+#: templates/header.html:32
+msgid "books"
msgstr "读书"
-#: templates/header.html:32
-msgid "Unanswered"
+#: templates/header.html:34 templates/index.html:120
+msgid "unanswered questions"
msgstr "没有回答的问题"
#: templates/header.html:38
-msgid "Ask a question"
+msgid "my profile"
+msgstr "我的资料"
+
+#: templates/header.html:42
+msgid "ask a question"
msgstr "我要提问"
-#: templates/header.html:53
-msgid "Search"
+#: templates/header.html:57
+msgid "search"
msgstr "搜索"
#: templates/index.html:6
msgid "Home"
msgstr "首页"
-#: templates/index.html:23 templates/questions.html:25
-msgid "Newest updated questions"
+#: templates/index.html:21
+msgid "Questions"
+msgstr "问题列表"
+
+#: templates/index.html:23
+msgid "last updated questions"
msgstr "最新更新的问题"
-#: templates/index.html:23 templates/questions.html:24
-msgid "Newest"
+#: templates/index.html:23 templates/unanswered.html:20
+msgid "newest"
msgstr "最新问题"
-#: templates/index.html:24 templates/questions.html:26
-msgid "Questions with most answers"
+#: templates/index.html:24
+msgid "hottest questions"
msgstr "被回复最多的问题"
-#: templates/index.html:24 templates/questions.html:26
-msgid "Hottest"
-msgstr "最热问题"
-
-#: templates/index.html:25 templates/questions.html:27
-msgid "Questions with most votes"
-msgstr "被投票最多的问题"
+#: templates/index.html:24
+msgid "hottest"
+msgstr "热门问题"
-#: templates/index.html:25 templates/questions.html:27
-msgid "Best"
-msgstr "最有价值问题"
+#: templates/index.html:25
+msgid "most voted questions"
+msgstr "投票次数最多的问题"
-#: templates/index.html:26 templates/index.html.py:118
-#: templates/questions.html:22
-msgid "All questions"
-msgstr "所有问题"
+#: templates/index.html:25
+msgid "most voted"
+msgstr "最有价值的问题"
#: templates/index.html:26
-msgid "All"
-msgstr "所有问题"
+msgid "all questions"
+msgstr "全部问题"
-#: templates/index.html:45 templates/questions.html:44
-msgid "Answers"
+#: templates/index.html:46 templates/unanswered.html:36
+#: templates/users_questions.html:35
+msgid "answers"
msgstr "回答"
-#: templates/index.html:47 templates/questions.html:46
-msgid "Visits"
-msgstr "访问"
+# must have extra space after in english
+#: templates/index.html:68 templates/question.html:112
+#: templates/question.html.py:479 templates/tags.html:46
+#: templates/unanswered.html:75 templates/unanswered.html.py:109
+#: templates/users_questions.html:52
+msgid "see questions tagged"
+msgstr "查看有关"
-#: templates/index.html:55 templates/questions.html:57
-#: templates/questions.html.py:69
-msgid "Community wiki"
-msgstr "社区wiki"
-
-#: templates/index.html:67 templates/index.html.py:91
-#: templates/questions.html:83
-msgid "Browse questions with tag of "
-msgstr "查看所有以下主题问题:"
+#: templates/index.html:79
+#, fuzzy
+msgid "welcome to website"
+msgstr "CNProg欢迎您!"
-#: templates/index.html:87
+#: templates/index.html:88
msgid "Recent tags"
msgstr "最新标签"
-#: templates/index.html:94 templates/index.html.py:118
-msgid "Popular tags"
+# this is how above two are supposed to be
+#: templates/index.html:93
+#, fuzzy, python-format
+msgid "see questions tagged '%(tagname)s'"
+msgstr "查看有关'%s'的问题"
+
+#: templates/index.html:96 templates/index.html.py:120
+msgid "popular tags"
msgstr "受欢迎的标签"
-#: templates/index.html:98
-msgid "Recent badges"
+#: templates/index.html:100
+msgid "Recent awards"
msgstr "最新奖牌"
-#: templates/index.html:109
-msgid "All badges"
+#: templates/index.html:106
+msgid "given to"
+msgstr "授予"
+
+#: templates/index.html:111
+msgid "all awards"
msgstr "所有奖牌"
-#: templates/index.html:113
-msgid "RSS feed of recent 30 questions"
+#: templates/index.html:115
+msgid "subscribe to last 30 questions by RSS"
msgstr "RSS订阅最新30个问题"
-#: templates/index.html:113
-msgid "Subscribe"
-msgstr "订阅最新问题"
-
-#: templates/index.html:118
-msgid "Are you looking for more questions? Try to browse"
+#: templates/index.html:120
+msgid "Still looking for more? See"
msgstr "在寻找更多问题吗?请查阅"
-#: templates/index.html:118
-msgid " or "
-msgstr " 或者 "
+#: templates/index.html:120
+#, fuzzy
+msgid "complete list of quesionts"
+msgstr "全部问题列表"
-#: templates/index.html:118
-msgid ". Please help us answer "
-msgstr "。请帮助我们回答"
+#: templates/index.html:120
+msgid "or"
+msgstr "或者"
-#: templates/index.html:118
-msgid "Unanswered questions"
-msgstr "没有回答的问题"
+#: templates/index.html:120
+msgid "."
+msgstr "。"
+
+#: templates/index.html:120
+msgid "Please help us answer"
+msgstr "请帮助我们回答"
+
+#: templates/logout.html:6 templates/logout.html.py:17
+msgid "Logout"
+msgstr "退出登录"
+
+#: templates/logout.html:20
+msgid ""
+"As a registered user you can login with your OpenID, log out of the site or "
+"permanently remove your account."
+msgstr ""
+"您是系统的<strong class=\"darkred\">注册</strong>用户,可以随时使用OpenID帐号"
+"登录系统或者注销登录。"
+
+#: templates/logout.html:21
+msgid "Logout now"
+msgstr "点击退出登录"
#: templates/pagesize.html:5
+#, fuzzy
msgid "Size per page:"
-msgstr "每页显示:"
+msgstr "每页显示"
+# paginator.html
#: templates/paginator.html:5
+#, fuzzy
msgid "Previous"
msgstr "上一页"
+#: templates/privacy.html:6 templates/privacy.html.py:11
+msgid "Privacy policy"
+msgstr "隐私政策"
+
+#: templates/privacy.html:15
+msgid "general message about privacy"
+msgstr ""
+"CNProg承认用户隐私的重要性。本文件概述在您浏览CNProg过程中所接收和收集的个人"
+"信息的种类,以及CNProg所采取的保护信息的一些措施。CNProg希望这将有助于您在知"
+"情的情况下,就和我们 共享个人信息的问题作出决定。"
+
+#: templates/privacy.html:18
+msgid "Site Visitors"
+msgstr "网站访问者"
+
+#: templates/privacy.html:20
+msgid "what technical information is collected about visitors"
+msgstr ""
+"当您访问本网站或使用我们的某些在线服务时,服务器会自动记录信息,包括但不限于"
+"URL、IP地址、浏览器的类型、屏幕分辨率、系统类型和使用的语言以及访问日期和时"
+"间。我们的目的是为了向您>提供更好的用户服务,包括可能为您提供定制的在线服务。"
+
+#: templates/privacy.html:23
+msgid "Personal Information"
+msgstr "个人身份信息"
+
+#: templates/privacy.html:25
+msgid "details on personal information policies"
+msgstr ""
+"在登录使用CNProg的提问和回答功能时,我们要求使用者提供用户名、密码、电子邮件"
+"等信息。CNProg收集这类关于个人身份的信息只是为了登录系统获得使用功能的目的。"
+"我们不会向任何其他社区用 户、个人或第三方透露您的密码或者电子邮件信息。用户可"
+"以选择性地填写用户资料、个人网站、年龄、城市等信息,我们收集这些内容为了使用"
+"户能够更容易和更满意地使用CNProg提供的网页和服务。"
+
+#: templates/privacy.html:28
+msgid "Other Services"
+msgstr "其他服务"
+
+#: templates/privacy.html:30
+msgid "details on sharing data with third parties"
+msgstr ""
+"CNProg可能会收集和统计用户访问本站的概况数据。例如,CNProg可能会检测网站最流"
+"行的部分功能。CNProg可能会公开显示或者提供给第三方使用该数据。但是,CNProg不"
+"会公开您的身份信息。"
+
+#: templates/privacy.html:35
+msgid "cookie policy details"
+msgstr ""
+"访问CNProg时,我们会向您的计算机发送一个或多个专门用于识别您的浏览器的Cookie"
+"(包含一个字符串的小文件)。 使用 Cookie 的目的是通过储存用户偏好、跟踪用户倾"
+"向(例如搜索方法)来提高我们的服务质量。大多数浏览器的初始设置均为接受 "
+"Cookie,但也可以将其重置为拒绝所有 Cookie 或在收到 Cookie 时提示。不过,如果"
+"禁用 Cookie,某些功能和服务可能无法正常运行。"
+
+#: templates/privacy.html:37
+msgid "Policy Changes"
+msgstr "政策更改"
+
+#: templates/privacy.html:38
+#, fuzzy
+msgid "how privacy policies can be changed"
+msgstr ""
+"我们可能在事先通知或不通知的情况下随时更改此'隐私政策',我们建议用户时常查看"
+"CNProg隐私政策的改动,在任何改动生效后您的继续访问和使用本站,我们假设您已同"
+"意了CNProg以上的所有条款。"
+
+#: templates/question.html:66 templates/question.html.py:78
+msgid "i like this post (click again to cancel)"
+msgstr "这篇帖子有价值(再次点击取消操作)"
+
+#: templates/question.html:68 templates/question.html.py:80
+#: templates/question.html:273
+msgid "current number of votes"
+msgstr "当前总票数"
+
+#: templates/question.html:73 templates/question.html.py:84
+msgid "i dont like this post (click again to cancel)"
+msgstr "这篇帖子没有价值(再次点击取消操作)"
+
+#: templates/question.html:90
+msgid "mark this question as favorite (click again to cancel)"
+msgstr "我要收藏这个问题(再次点击取消操作)"
+
+#: templates/question.html:96
+msgid "remove favorite mark from this question (click again to restore mark)"
+msgstr "我要收藏这个问题(再次点击取消操作)"
+
+#: templates/question.html:121 templates/question.html.py:304
+#: templates/revisions_answer.html:53 templates/revisions_question.html:53
+msgid "edit"
+msgstr "编辑"
+
+#: templates/question.html:125 templates/question.html.py:314
+msgid "delete"
+msgstr "删除"
+
+#: templates/question.html:130
+msgid "reopen"
+msgstr "打开"
+
+#: templates/question.html:135
+msgid "close"
+msgstr "关闭"
+
+#: templates/question.html:141 templates/question.html.py:327
+msgid ""
+"report as offensive (i.e containing spam, advertising, malicious text, etc.)"
+msgstr "检举该帖为垃“水帖”(含广告、人身攻击、恶意言论等)"
+
+#: templates/question.html:142 templates/question.html.py:328
+msgid "flag offensive"
+msgstr "垃圾帖?"
+
+#: templates/question.html:154 templates/question.html.py:337
+#: templates/revisions_answer.html:65 templates/revisions_question.html:65
+msgid "updated"
+msgstr "更新于"
+
+#: templates/question.html:203 templates/question.html.py:384
+#: templates/revisions_answer.html:63 templates/revisions_question.html:63
+msgid "asked"
+msgstr "提问于"
+
+#: templates/question.html:233 templates/question.html.py:411
+msgid "comments"
+msgstr "评论"
+
+#: templates/question.html:234 templates/question.html.py:412
+msgid "add comment"
+msgstr "添加评论"
+
+#: templates/question.html:247
+#, fuzzy, python-format
+msgid ""
+"The question has been closed for the following reason \"%(question."
+"get_close_reason_display)s\" by"
+msgstr "问题以“%s”的原因已被"
+
+#: templates/question.html:249
+#, fuzzy, python-format
+msgid "close date %(question.closed_at)s"
+msgstr "由于以下原因,你要关闭这个问题"
+
+#: templates/question.html:256 templates/questions.html:44
+#: templates/user_stats.html:28
+msgid "Answers"
+msgstr "个回答"
+
+#: templates/question.html:258
+msgid "oldest answers will be shown first"
+msgstr "最先回答显示在最前面"
+
+#: templates/question.html:258
+msgid "oldest answers"
+msgstr "最先回答"
+
+#: templates/question.html:259
+msgid "newest answers will be shown first"
+msgstr "最晚回答显示在最前面"
+
+#: templates/question.html:259
+msgid "newest answers"
+msgstr "最近回答"
+
+#: templates/question.html:260
+msgid "most voted answers will be shown first"
+msgstr "投票次数最多的显示在最前面"
+
+#: templates/question.html:260
+msgid "popular answers"
+msgstr "投票最多"
+
+#: templates/question.html:272
+msgid "i like this answer (click again to cancel)"
+msgstr "这篇帖子有价值(再次点击取消操作)"
+
+#: templates/question.html:278
+msgid "i dont like this answer (click again to cancel)"
+msgstr "这篇帖子没有价值(再次点击取消操作)"
+
+#: templates/question.html:284
+msgid "mark this answer as favorite (click again to undo)"
+msgstr "最佳答案(再次点击取消操作)"
+
+#: templates/question.html:289
+msgid "the author of the question has selected this answer as correct"
+msgstr "这个答案已经被提问作者标记为最佳答案"
+
+# todo please check this in chinese
+#: templates/question.html:311
+msgid "undelete"
+msgstr "取消"
+
+#: templates/question.html:321
+msgid "answer permanent link"
+msgstr "该回答的链接地址"
+
+#: templates/question.html:322
+msgid "permanent link"
+msgstr "永久链接"
+
+#: templates/question.html:436
+msgid "Your answer"
+msgstr "您的回答"
+
+#: templates/question.html:460
+msgid "Answer the question"
+msgstr "回答该问题"
+
+#: templates/question.html:462
+msgid "Login to answer"
+msgstr "登录并回答该问题"
+
+#: templates/question.html:474
+msgid "Question tags"
+msgstr "您正在浏览的问题含有以下标签"
+
+#: templates/question.html:484
+#, fuzzy
+msgid "question asked"
+msgstr "提问时间"
+
+#: templates/question.html:484 templates/question.html.py:490
+#: templates/user_info.html:51
+msgid "ago"
+msgstr "前"
+
+#: templates/question.html:487
+msgid "question was seen"
+msgstr "目前浏览数量"
+
+#: templates/question.html:487
+msgid "times"
+msgstr "次"
+
+#: templates/question.html:490
+msgid "last updated"
+msgstr "最后更新时间"
+
+#: templates/question.html:495
+#, fuzzy
+msgid "Related questions"
+msgstr "相似的问题"
+
+# page title
+#: templates/question_edit.html:4 templates/question_edit.html.py:65
+msgid "Edit question"
+msgstr "修改问题"
+
+#: templates/question_edit_tips.html:4
+msgid "question tips"
+msgstr "受欢迎的提问"
+
+#: templates/question_edit_tips.html:7
+#, fuzzy
+msgid "please ask a relevant question"
+msgstr "我要提问"
+
+#: templates/question_edit_tips.html:10
+#, fuzzy
+msgid "please try provide enough details"
+msgstr "请详细描述您的问题。"
+
+#: templates/question_edit_tips.html:13
+msgid "be clear and concise"
+msgstr "我们推荐您使用中文描述问题,这样可以得到更多的答复机会。"
+
+#: templates/question_edit_tips.html:16
+msgid "see frequently asked questions"
+msgstr "查看常见问题"
+
+#: templates/question_edit_tips.html:22
+msgid "Markdown tips"
+msgstr "Markdown快速参考"
+
+#: templates/question_edit_tips.html:25
+#, fuzzy
+msgid "*italic* or __italic__"
+msgstr "*斜体* 或者 _斜体_"
+
+#: templates/question_edit_tips.html:28
+msgid "**bold** or __bold__"
+msgstr "**加粗** 或者 __加粗__ "
+
+#: templates/question_edit_tips.html:31
+msgid "link"
+msgstr "链接"
+
+#: templates/question_edit_tips.html:31 templates/question_edit_tips.html:36
+msgid "text"
+msgstr "文本"
+
+#: templates/question_edit_tips.html:36
+msgid "image"
+msgstr "图片"
+
+#: templates/question_edit_tips.html:40
+msgid "numbered list:"
+msgstr "列表:"
+
+#: templates/question_edit_tips.html:45
+msgid "basic HTML tags are also supported"
+msgstr "基本的HTML标签也是支持的"
+
+#: templates/question_edit_tips.html:48
+msgid "learn more about Markdown"
+msgstr "有关Markdown详细说明"
+
#: templates/questions.html:6
+#, fuzzy
msgid "Question list"
msgstr "问题列表"
#: templates/questions.html:22
+#, fuzzy
msgid "Tagged questions"
-msgstr "标签问题"
+msgstr "相似的问题"
#: templates/questions.html:22
msgid "Query result"
-msgstr "查询结果"
+msgstr ""
+
+#: templates/questions.html:22
+msgid "All questions"
+msgstr "所有问题"
#: templates/questions.html:24
+#, fuzzy
msgid "New questions"
+msgstr "问题"
+
+#: templates/questions.html:24
+#, fuzzy
+msgid "Newest"
msgstr "最新问题"
#: templates/questions.html:25
+#, fuzzy
+msgid "Newest updated questions"
+msgstr "最新更新的问题"
+
+#: templates/questions.html:25
+#, fuzzy
msgid "Active"
msgstr "活跃问题"
-#: templates/questions.html:125
+#: templates/questions.html:26
+#, fuzzy
+msgid "Questions with most answers"
+msgstr "您正在浏览的问题含有以下标签"
+
+#: templates/questions.html:26
+#, fuzzy
+msgid "Hottest"
+msgstr "热门问题"
+
+#: templates/questions.html:27
+msgid "Questions with most votes"
+msgstr ""
+
+#: templates/questions.html:27
+#, fuzzy
+msgid "Best"
+msgstr "最新问题"
+
+#: templates/questions.html:45
+#, fuzzy
+msgid "Votes"
+msgstr "票"
+
+#: templates/questions.html:46
+#, fuzzy
+msgid "Visits"
+msgstr "网站访问者"
+
+# index.html
+#: templates/questions.html:57 templates/questions.html.py:69
+#, fuzzy
+msgid "Community wiki"
+msgstr "社区Wiki"
+
+# must have extra space after in english
+#: templates/questions.html:83
+#, fuzzy
+msgid "Browse questions with tag of "
+msgstr "查看有关"
+
+#: templates/questions.html:125 templates/unanswered.html:105
msgid "Related tags"
msgstr "相关标签"
-#: templates/authopenid/changeemail.html:10
+#: templates/reopen.html:6 templates/reopen.html.py:16
+msgid "Reopen question"
+msgstr "重设问题"
+
+#: templates/reopen.html:19
+msgid "Open the previously closed question"
+msgstr "你将打开这个已经被关闭的问题"
+
+#: templates/reopen.html:22
+#, fuzzy
+msgid "The question was closed for the following reason "
+msgstr "问题曾以"
+
+#: templates/reopen.html:22
+msgid "reason - leave blank in english"
+msgstr "的原因被"
+
+#: templates/reopen.html:22
+#, fuzzy
+msgid "on "
+msgstr "于"
+
+#: templates/reopen.html:22
+msgid "date closed"
+msgstr "关闭"
+
+#: templates/reopen.html:29
+#, fuzzy
+msgid "Reopen this question"
+msgstr "确定打开这个问题"
+
+# revisions_answer.html
+#: templates/revisions_answer.html:7 templates/revisions_answer.html.py:36
+#: templates/revisions_question.html:8 templates/revisions_question.html:36
+msgid "Revision history"
+msgstr "版本历史"
+
+#: templates/tags.html:5 templates/tags.html.py:28
+msgid "Tag list"
+msgstr "标签列表"
+
+#: templates/tags.html:30
+msgid "sorted alphabetically"
+msgstr "按名称的字母先后顺序排序"
+
+#: templates/tags.html:30
+msgid "by name"
+msgstr "按名称排序"
+
+#: templates/tags.html:31
+msgid "sorted by frequency of tag use"
+msgstr "按标签被使用的次数排序"
+
+#: templates/tags.html:31
+#, fuzzy
+msgid "by popularity"
+msgstr "按流行程度排序"
+
+#: templates/tags.html:37
+msgid "All tags matching query"
+msgstr "匹配查询"
+
+#: templates/tags.html:37
+msgid "all tags - make this empty in english"
+msgstr "的所有标签"
+
+#: templates/tags.html:40
+#, fuzzy
+msgid "Nothing found"
+msgstr "没有找到相关数据。"
+
+#: templates/unanswered.html:7 templates/unanswered.html.py:18
+msgid "Unanswered questions"
+msgstr "没有回答的问题"
+
+#: templates/unanswered.html:20
+msgid "most recently asked questions"
+msgstr "最新加入系统的问题"
+
+#: templates/unanswered.html:97
+#, python-format
+msgid "have %(num_q)s unanswered questions"
+msgstr ""
+"您正在浏览所有<br><div class=\"questions-count\">%(num_q)s</div>个<p>问题按 "
+"<strong>问题创建时间</strong> 排序。最新加入的问题将显示在最前面。</p>"
+
+# in unanswered.html and somewhere else
+#: templates/unanswered.html:99
+msgid "Have a total of"
+msgstr "您正在浏览所有"
+
+#: templates/user_edit.html:6
+msgid "Edit user profile"
+msgstr "修改个人资料"
+
+#: templates/user_edit.html:19
+msgid "edit profile"
+msgstr "修改资料"
+
+#: templates/user_edit.html:31
+msgid "image associated with your email address"
+msgstr "和您的邮件地址是绑定的"
+
+#: templates/user_edit.html:31
+msgid "avatar"
+msgstr "修改头像"
+
+#: templates/user_edit.html:36 templates/user_info.html:31
+msgid "Registered user"
+msgstr "注册用户"
+
+#: templates/user_edit.html:82
+msgid "Update"
+msgstr "更新"
+
+#: templates/user_info.html:34
+msgid "update profile"
+msgstr "更新我的资料"
+
+#: templates/user_info.html:40
+msgid "real name"
+msgstr "姓名"
+
+#: templates/user_info.html:45
+msgid "member for"
+msgstr "已加入"
+
+#: templates/user_info.html:50
+msgid "last seen"
+msgstr "上次活动时间"
+
+#: templates/user_info.html:56
+msgid "user website"
+msgstr "个人网站"
+
+#: templates/user_info.html:62
+msgid "location"
+msgstr "城市"
+
+# user_info.html
+#: templates/user_info.html:69
+msgid "age"
+msgstr "年龄"
+
+#: templates/user_info.html:70
+msgid "age unit"
+msgstr "岁"
+
+#: templates/user_info.html:75
+msgid "todays unused votes"
+msgstr "今日剩余投票数"
+
+#: templates/user_info.html:76
+msgid "votes left"
+msgstr "票"
+
+#: templates/user_stats.html:15
+msgid "User questions"
+msgstr "个问题"
+
+#: templates/user_stats.html:37
+#, fuzzy, python-format
+msgid "the answer has been voted for %(vote_count)s times"
+msgstr "该回答总共有%d个投票"
+
+#: templates/user_stats.html:37
+msgid "this answer has been selected as correct"
+msgstr "该回答已被设为最佳答案"
+
+#: templates/user_stats.html:43
+#, fuzzy, python-format
+msgid "the answer has been commented %(answered_question.comment_count)s times"
+msgstr "该回答有%d条评论"
+
+#: templates/user_stats.html:56
+msgid "votes total"
+msgstr "个投票"
+
+#: templates/user_stats.html:65
+msgid "user has voted up this many times"
+msgstr "该用户投的赞成票总数"
+
+#: templates/user_stats.html:70
+#, fuzzy
+msgid "user voted down this many times"
+msgstr "用户投的反对票总数"
+
+#: templates/user_stats.html:84
+msgid "Tags"
+msgstr "个标签"
+
+#: templates/user_stats.html:94
+#, fuzzy, python-format
+msgid "see other questions tagged '%(tag)s' "
+msgstr "查看有关'%s'的问题"
+
+#: templates/user_tabs.html:7
+msgid "User profile"
+msgstr "用户概览"
+
+#: templates/user_tabs.html:16
+msgid "graph of user reputation"
+msgstr "用户的社区积分历史"
+
+#: templates/user_tabs.html:17
+msgid "reputation history"
+msgstr "积分"
+
+#: templates/user_tabs.html:24
+msgid "favorites"
+msgstr "收藏"
+
+#: templates/user_tabs.html:29
+msgid "settings"
+msgstr "设置"
+
+#: templates/user_votes.html:14
+msgid "upvote"
+msgstr "投赞成票"
+
+#: templates/user_votes.html:16
+msgid "downvote"
+msgstr "投反对票"
+
+#: templates/users.html:5 templates/users.html.py:23
+msgid "Users"
+msgstr "用户列表"
+
+#: templates/users.html:26
+msgid "recent"
+msgstr "最新加入"
+
+#: templates/users.html:27
+msgid "oldest"
+msgstr "最先加入"
+
+#: templates/users.html:28
+msgid "by username"
+msgstr "用户名"
+
+#: templates/users.html:34
+#, fuzzy, python-format
+msgid "users matching query %(suser)s:"
+msgstr ""
+"匹配查询 '<span class=\"darkred\"><strong>%s</strong></span>' 的所有用户名:"
+
+#: templates/users.html:38
+msgid "Nothing found."
+msgstr "没有找到相关数据。"
+
+#: templates/users_questions.html:11
+#, fuzzy
+msgid "this questions was selected as favorite"
+msgstr "这个问题被"
+
+#: templates/users_questions.html:33
+#, fuzzy
+msgid "this answer has been accepted to be correct"
+msgstr "有答案已被接受为正确答案"
+
+#: templates/authopenid/changeemail.html:6
+#, fuzzy
msgid "Account: change email"
-msgstr "修改电子邮件"
+msgstr "更换电子邮件"
-#: templates/authopenid/changeemail.html:13
+#: templates/authopenid/changeemail.html:9
msgid ""
"This is where you can change the email address associated with your account. "
"Please keep this email address up to date so we can send you a password-"
"reset email if you request one."
msgstr ""
-"您可以在这里修改您的电子邮件,请确保这个邮件地址有效-找回密码将发送新密码到您"
-"的邮件地址。"
-#: templates/authopenid/changeemail.html:15
+#: templates/authopenid/changeemail.html:11
#: templates/authopenid/changeopenid.html:13
#: templates/authopenid/changepw.html:18 templates/authopenid/delete.html:14
#: templates/authopenid/delete.html:24
msgid "Please correct errors below:"
-msgstr "请改正以下错误:"
+msgstr ""
-#: templates/authopenid/changeemail.html:32
+#: templates/authopenid/changeemail.html:28
msgid "Email"
-msgstr "电子邮件"
+msgstr ""
-#: templates/authopenid/changeemail.html:33
+#: templates/authopenid/changeemail.html:29
+#: templates/authopenid/signin.html:60
msgid "Password"
msgstr "密码"
-#: templates/authopenid/changeemail.html:35
+#: templates/authopenid/changeemail.html:31
msgid "Change email"
-msgstr "修改电子邮件"
+msgstr "更换电子邮件"
#: templates/authopenid/changeopenid.html:7
+#, fuzzy
msgid "Account: change OpenID URL"
-msgstr "修改OpenID地址"
+msgstr "更换OpenID地址"
#: templates/authopenid/changeopenid.html:11
msgid ""
"This is where you can change your OpenID URL. Make sure you remember it!"
-msgstr "请修改您的OpenID地址,请不要忘记这个地址!"
+msgstr ""
#: templates/authopenid/changeopenid.html:28
msgid "OpenID URL:"
-msgstr "OpenID地址:"
+msgstr ""
#: templates/authopenid/changeopenid.html:29
msgid "Change OpenID"
-msgstr "修改OpenID"
+msgstr "更换OpenID地址"
#: templates/authopenid/changepw.html:13
+#, fuzzy
msgid "Account: change password"
msgstr "修改密码"
#: templates/authopenid/changepw.html:16
msgid "This is where you can change your password. Make sure you remember it!"
-msgstr "请修改您的密码,切记不要忘记!"
+msgstr ""
#: templates/authopenid/changepw.html:26
+#, fuzzy
msgid "Current password"
-msgstr "旧密码"
+msgstr "确认密码"
#: templates/authopenid/changepw.html:27
+#, fuzzy
msgid "New password"
-msgstr "新密码"
+msgstr "密码"
#: templates/authopenid/changepw.html:28
+#, fuzzy
msgid "New password again"
-msgstr "重复密码"
+msgstr "发送新密码"
-#: templates/authopenid/changepw.html:29
+#: templates/authopenid/changepw.html:29 templates/authopenid/settings.html:28
msgid "Change password"
msgstr "修改密码"
+#: templates/authopenid/complete.html:4
+msgid "Connect your OpenID with this site"
+msgstr "绑定OpenID"
+
+#: templates/authopenid/complete.html:7
+msgid "Connect your OpenID with your account on this site"
+msgstr "绑定OpenID帐号"
+
+#: templates/authopenid/complete.html:10
+#, fuzzy
+msgid "Your OpenID is accepted. Please complete this to finish registration."
+msgstr "您的OpenID帐号已经验证通过! 请完成最后一步 - 绑定OpenID到您的帐号。"
+
+# todo: review this message may be confusing user
+#: templates/authopenid/complete.html:11
+msgid "This account already exists, please use another."
+msgstr "输入您的新帐号或者指定已经存在的帐号。"
+
+#: templates/authopenid/complete.html:16 templates/authopenid/complete.html:29
+#: templates/authopenid/signin.html:43
+msgid "Sorry, looks like we have some errors:"
+msgstr "请注意以下错误:"
+
+#: templates/authopenid/complete.html:45
+msgid "New account"
+msgstr "新帐号"
+
+#: templates/authopenid/complete.html:46
+msgid "User name (<i>will be shown to others, cannot be modified</i>)"
+msgstr "用户名(<i>在社区显示友好名称,不可更改</i>)"
+
+#: templates/authopenid/complete.html:47
+msgid "Email (<i>not shared with anyone</i>)"
+msgstr "电子邮件(<i>用于头像显示服务</i>)"
+
+#: templates/authopenid/complete.html:48
+msgid "create account"
+msgstr "创建帐号"
+
+#: templates/authopenid/complete.html:56
+msgid "Existing account"
+msgstr "已经存在的用户"
+
+#: templates/authopenid/complete.html:57
+msgid "user name"
+msgstr "用户名"
+
+#: templates/authopenid/complete.html:58
+msgid "password"
+msgstr "密码"
+
+#: templates/authopenid/complete.html:61
+msgid "Register"
+msgstr "确认"
+
+#: templates/authopenid/complete.html:62 templates/authopenid/signin.html:62
+msgid "Forgot your password?"
+msgstr "忘记密码?"
+
#: templates/authopenid/delete.html:8
+#, fuzzy
msgid "Account: delete account"
msgstr "删除帐号"
@@ -540,90 +1921,531 @@ msgstr "删除帐号"
msgid ""
"Note: After deleting your account, anyone will be able to register this "
"username."
-msgstr "注意:删除您的帐号后,任何其他人可以再注册这个帐号。"
+msgstr ""
#: templates/authopenid/delete.html:16
msgid "Check confirm box, if you want delete your account."
-msgstr "如果确定删除,请选中多选框。"
+msgstr ""
#: templates/authopenid/delete.html:19
+#, fuzzy
msgid "Password:"
-msgstr "密码:"
+msgstr "密码"
#: templates/authopenid/delete.html:31
msgid "I am sure I want to delete my account."
-msgstr "我确认要删除这个帐号。"
+msgstr ""
#: templates/authopenid/delete.html:32
msgid "Password/OpenID URL"
-msgstr "密码/OpenID地址"
+msgstr ""
#: templates/authopenid/delete.html:32
msgid "(required for your security)"
-msgstr "(必需)"
+msgstr ""
#: templates/authopenid/delete.html:34
+#, fuzzy
msgid "Delete account permanently"
-msgstr "永久删除帐号"
+msgstr "删除帐号"
+
+#: templates/authopenid/sendpw.html:3 templates/authopenid/sendpw.html.py:7
+msgid "Send new password"
+msgstr "发送新密码"
+
+#: templates/authopenid/sendpw.html:11
+msgid "Lost your password? No problem - here you can reset it."
+msgstr "丢失了您的密码? 你可以在这里重设密码。"
+
+#: templates/authopenid/sendpw.html:12
+msgid ""
+"Please enter your username below and new password will be sent to your "
+"registered e-mail"
+msgstr "请输入用户名,新的密码会发送到你注册时候填写的电子邮件。"
+
+#: templates/authopenid/sendpw.html:29
+msgid "Reset password"
+msgstr "重设密码"
+
+#: templates/authopenid/sendpw.html:29
+msgid "return to login"
+msgstr "返回登录"
+
+# todo - check translation or see if it's indeed true
+#: templates/authopenid/sendpw.html:32
+msgid ""
+"Note: your new password will be activated only after you click the "
+"activation link in the email message"
+msgstr "注意: 新的密码只有您在激活邮件中的链接后才会被激活。"
#: templates/authopenid/settings.html:29
msgid "Give your account a new password."
-msgstr "修改密码"
+msgstr ""
+
+#: templates/authopenid/settings.html:30
+#, fuzzy
+msgid "Change email "
+msgstr "更换电子邮件"
#: templates/authopenid/settings.html:31
msgid "Add or update the email address associated with your account."
-msgstr "添加或者更新您的邮件地址。"
+msgstr ""
#: templates/authopenid/settings.html:34
msgid "Change openid associated to your account"
-msgstr "修改和你帐号绑定的OpenID地址"
+msgstr ""
+
+#: templates/authopenid/settings.html:37
+msgid "Delete account"
+msgstr "删除帐号"
#: templates/authopenid/settings.html:38
msgid "Erase your username and all your data from website"
-msgstr "删除您的帐号和所有内容"
+msgstr ""
+
+#: templates/authopenid/signin.html:3 templates/authopenid/signin.html:16
+msgid "User login"
+msgstr "用户登录"
+#: templates/authopenid/signin.html:21
+msgid "we support two login modes"
+msgstr ""
+"CNProg支持<b>两种</b>登录模式。您可以使用帐号、密码登录,或者使用OpenID登录。"
+
+#: templates/authopenid/signin.html:26 templates/authopenid/signup.html:49
+msgid "Login with your OpenID"
+msgstr "使用OpenID登录"
+
+#: templates/authopenid/signin.html:28
+msgid "select openid provider"
+msgstr "1)请选择您的帐号类:"
+
+#: templates/authopenid/signin.html:32
+msgid "verify openid link and login"
+msgstr "2)型并完成正确的OpenID地址(如:替换“{username}”为您的对应帐号):"
+
+#: templates/authopenid/signin.html:58
+msgid "Use login name and password"
+msgstr "使用帐号密码登录"
+
+#: templates/authopenid/signin.html:59
+msgid "Login name"
+msgstr "用户名"
+
+#: templates/authopenid/signin.html:63
#, fuzzy
-#~ msgid "Badges "
-#~ msgstr "奖牌列表"
+msgid "Create new acccount"
+msgstr "注册新帐号"
-#~ msgid ""
-#~ "This username is already taken. Please choose another."
-#~ msgstr "用户名已经被注册,请选用一个新的帐号。"
+#: templates/authopenid/signin.html:72
+msgid "Why use OpenID?"
+msgstr "为什么需要OpenID登录?"
+
+#: templates/authopenid/signin.html:76
+msgid "with openid it is easier"
+msgstr ""
+"构建在OpenID网络认证上的本系统,不需要你注册新的帐号,即可使用我们系统的所有"
+"功能"
+
+#: templates/authopenid/signin.html:79
+msgid "reuse openid"
+msgstr "用同一个帐号可登录互联网所有激活OpenID的网站"
+
+#: templates/authopenid/signin.html:82
+msgid "openid is widely adopted"
+msgstr "全世界有1.6亿OpenID帐号,和10,000个支持OpenID的站点"
+
+#: templates/authopenid/signin.html:85
+msgid "openid is supported open standard"
+msgstr "OpenID是有开放标准,并且有相关的基金组织提供支持"
+
+#: templates/authopenid/signin.html:89
+msgid "Find out more"
+msgstr "查看更多"
+
+#: templates/authopenid/signin.html:90
+msgid "Get OpenID"
+msgstr "获取OpenID"
+
+#: templates/authopenid/signup.html:2 templates/authopenid/signup.html.py:6
+msgid "Signup"
+msgstr "注册帐号"
+
+#: templates/authopenid/signup.html:10
+msgid ""
+"We support two types of user registration: conventional username/password, "
+"and"
+msgstr "我们支持两种注册方式,你可以使用常规的用户名、密码方式注册,或者"
+
+#: templates/authopenid/signup.html:10
+msgid "the OpenID method"
+msgstr "使用OpenID帐号注册"
+
+#: templates/authopenid/signup.html:15
+#, fuzzy
+msgid "Sorry, looks like we have some errors"
+msgstr "请注意以下错误:"
+
+#: templates/authopenid/signup.html:33
+msgid "Conventional registration"
+msgstr "请注意以下错误:"
+
+#: templates/authopenid/signup.html:34
+msgid "choose a user name"
+msgstr "选择一个用户名"
+
+#: templates/authopenid/signup.html:40
+msgid "back to login"
+msgstr "返回登录"
+
+#: templates/authopenid/signup.html:46
+msgid "Register with your OpenID"
+msgstr "使用OpenID注册"
+
+#~ msgid "meta site keywords, comma separated"
+#~ msgstr ""
+#~ "技术问答社区,中国程序员,编程技术社区,程序员社区,程序员论坛,程序员"
+#~ "wiki,程序员博客"
+
+#~ msgid "what is this website"
+#~ msgstr ""
+#~ "CNProg是一个<strong>面向程序员</strong>的可协作编辑的<strong>开放源代码问"
+#~ "答社区</strong>。"
+
+#~ msgid "what can one do on this website"
+#~ msgstr ""
+#~ "您可以在这里提问各类<strong>程序技术问题</strong> - 问题不分语言和平台。 "
+#~ "同时也希望您对力所能及的问题,给予您的宝贵答案。"
+
+#~ msgid "Goal of this site is..."
+#~ msgstr "CNProg 是为了帮助程序员解决更多问题,更加方便的解决问题。"
+
+#~ msgid "Community gives you awards for your questions, answers and votes."
+#~ msgstr ""
+#~ "提出问题,给予回答,投出你的票 - CNProg 会针对你在社区的表现,授予你各类奖"
+#~ "牌。"
+
+#~ msgid "please make your answer relevant to this community"
+#~ msgstr "您的问题与编程相关吗?"
+
+#~ msgid "book technical Q&A"
+#~ msgstr "图书相关的技术答疑"
+
+#~ msgid "blog"
+#~ msgstr "Blog"
+
+#~ msgid "privacy policy"
+#~ msgstr "隐私政策"
+
+#~ msgid "current revision"
+#~ msgstr "当前版本"
+
+#~ msgid "number of votes"
+#~ msgstr "票数"
-#~ msgid "Your OpenID is verified! "
-#~ msgstr "您的OpenID帐号已经验证通过"
+#~ msgid "current page"
+#~ msgstr "当前页"
-#~ msgid "Associate your OpenID"
-#~ msgstr "绑定您的OpenID"
+#~ msgid "next page"
+#~ msgstr "下一页"
+
+#~ msgid "page number "
+#~ msgstr "第"
+
+#~ msgid "number - make blank in english"
+#~ msgstr "页"
+
+#~ msgid "Change tags"
+#~ msgstr "修改问题标签"
+
+# todo: remove magic numbers from this file
+#~ msgid "up to 5 tags, less than 20 characters each"
+#~ msgstr "最多5个标签,每个标签长度小于20个字符。"
+
+#~ msgid "Change now"
+#~ msgstr "现在修改"
+
+#~ msgid "uses tags for the classification of questions"
+#~ msgstr "用标签来分类系统的信息"
+
+#~ msgid "tag editors receive special awards from the community"
+#~ msgstr "修改标签的用户将授予特殊的社区奖牌"
+
+#~ msgid "Why use and modify tags?"
+#~ msgstr "为什么我只能修改问题标签?"
+
+#~ msgid "Found by tag"
+#~ msgstr "标签问题"
+
+#~ msgid "Found by title"
+#~ msgstr "查询结果"
+
+#~ msgid "most recently updated questions"
+#~ msgstr "最近被更新的问题"
+
+#~ msgid "latest questions info"
+#~ msgstr ""
+#~ "问题按<strong>提问时间</strong>显示排序。新加入的问题将显示在最前面。"
#~ msgid ""
#~ "\n"
-#~ "\t<p>If you're joining <strong>Sitename</strong>, associate your OpenID "
-#~ "with a new account. If you're already a member, associate with your "
-#~ "existing account.</p>\n"
-#~ "\t"
-#~ msgstr ""
+#~ "\t\t\thave total %(q_num)s questions tagged %(tagname)s\n"
+#~ "\t\t\t"
+#~ msgid_plural ""
+#~ "\n"
+#~ "\t\t\thave total %(q_num)s questions tagged %(tagname)s\n"
+#~ "\t\t\t"
+#~ msgstr[0] ""
#~ "\n"
-#~ "\t<p>输入您的新帐号或者指定已经存在的帐号。</p>\n"
-#~ "\t"
+#~ "您正在浏览所有<div class=\"questions-count\">%(q_num)s</div>个标记为<span "
+#~ "class=\"tag\">%(tagname)s</span></p>"
+#~ msgstr[1] ""
+#~ "\n"
+#~ "您正在浏览所有<div class=\"questions-count\">%(q_num)s</div>个标记为<span "
+#~ "class=\"tag\">%(tagname)s</span></p>"
-#~ msgid "A new account"
-#~ msgstr "新帐号"
+#~ msgid ""
+#~ "\n"
+#~ "\t\t\thave total %(q_num)s questions containing %(searchtitle)s\n"
+#~ "\t\t\t"
+#~ msgid_plural ""
+#~ "\n"
+#~ "\t\t\thave total %(q_num)s questions containing %(searchtitle)s\n"
+#~ "\t\t\t"
+#~ msgstr[0] ""
+#~ "\n"
+#~ "您正在浏览所有<div class=\"questions-count\">%(q_num)s</div>个标题含有"
+#~ "<span class=\"tag\">%(searchtitle)s</span></p>"
+#~ msgstr[1] ""
+#~ "\n"
+#~ "您正在浏览所有<div class=\"questions-count\">%(q_num)s</div>个标题含有"
+#~ "<span class=\"tag\">%(searchtitle)s</span></p>"
+
+#~ msgid "number of questions"
+#~ msgstr "个"
+
+#~ msgid "number of <strong>unanswered</strong> questions"
+#~ msgstr ""
+#~ "个 <span class=\"darkred\"><strong>没有回答的</strong></span> 问题。"
+
+#~ msgid "tagged with"
+#~ msgstr "标记为"
+
+#~ msgid "whose title contains"
+#~ msgstr "标题含有"
+
+#~ msgid "number of questions end of sentence"
+#~ msgstr "的问题。"
+
+#~ msgid "Questions are sorted by the <strong>time of last update</strong>."
+#~ msgstr "问题按<strong>最后更新时间</strong>显示排序。"
+
+#~ msgid "Most recently answered ones are shown first."
+#~ msgstr "最后被回答或者>更新的问题将显示在最前面。"
+
+#~ msgid "Questions sorted by <strong>number of responses</strong>."
+#~ msgstr "问题按<strong>回复数量</strong>显示排序。"
+
+#~ msgid "Most answered questions are shown first"
+#~ msgstr "回复最多的问题将显示在最前面。"
+
+#~ msgid "Questions are sorted by the <strong>number of votes</strong>."
+#~ msgstr "问题按<strong>投票数量</strong>显示排序。"
+
+#~ msgid "Most voted questions are shown first"
+#~ msgstr "投票最多的问题将显示在最前面。"
+
+#~ msgid "questions that user selected as his/her favorite"
+#~ msgstr "用户收藏的问题"
+
+#~ msgid "Frequently Asked Questions "
+#~ msgstr "常见问题"
+
+#~ msgid "What kinds of questions can I ask here?"
+#~ msgstr "我可以在这里提问什么样的问题?"
+
+#~ msgid "What questions should I avoid asking?"
+#~ msgstr "什么样的问题我不该在这里提问?"
+
+#~ msgid ""
+#~ "Most importanly - questions should be <strong>relevant</strong> to this "
+#~ "community."
+#~ msgstr "毫无疑问,首先必须是<span class=\"yellowbg\">技术编程问题!</span>"
+
+#~ msgid ""
+#~ "Before asking the question - please make sure to use search to see "
+#~ "whether your question has alredy been answered."
+#~ msgstr ""
+#~ "提问之前,充分利用系统的自动查找、标签和搜索,看看是否已经有一样的问题并有"
+#~ "了答案。"
+
+#~ msgid "What should I avoid in my answers?"
+#~ msgstr "什么样的回答是不受欢迎的?"
+
+#~ msgid "Who moderates this community?"
+#~ msgstr "谁是社区的管理员?"
+
+#~ msgid ""
+#~ "Please avoid asking questions that are not relevant to this community, "
+#~ "too subjective and argumentative."
+#~ msgstr ""
+#~ "<span class=\"yellowbg\">与程序员或技术无关的,引起争吵或太过于主观性等违"
+#~ "背社区宗旨的内容。</span>本站建立是为了帮助大众程序员解决实际技术问题,我"
+#~ "们需要实际的问题!"
+
+#~ msgid ""
+#~ "is a Q&A site, not a discussion group. Therefore - please avoid having "
+#~ "discussions in your answers, comment facility allows some space for brief "
+#~ "discussions."
+#~ msgstr ""
+#~ "希望用户提供针对提问的技术回答,可以是进一步了解问题实质,给予参考方案,或"
+#~ "完全解决问题的回答。我们希望通过问答的形式解决用户的实际问题。因此,<span "
+#~ "class=\"yellowbg\">我们不>欢迎在回答中出现不是回答问题的内容,包括针对他人"
+#~ "回答的讨论,和其他无意义的浪费网络资源行为</span>。CNProg建议您使用<span "
+#~ "class=\"yellowbg\">评论</span>功能来讨论你的意见和想法。"
-#~ msgid "An exisiting account"
-#~ msgstr "已经存在的帐号"
+#~ msgid "The short answer is: <strong>you</strong>."
+#~ msgstr "答案是:<span class=\"yellowbg\">每个用户。</span>"
-#~ msgid "Account: Send a new password"
-#~ msgstr "发送一个新的密码"
+#~ msgid ""
+#~ "The reputation system allows users earn the authorization to perform a "
+#~ "variety of moderation tasks."
+#~ msgstr ""
+#~ "通过积分运作,<span class=\"yellowbg\">每个用户都有权限创建标签,进行对所"
+#~ "有问题、回答的投票、编辑、关闭等操作。</span>"
+
+#~ msgid "This website is moderated by the users."
+#~ msgstr "社区没有严格意义上的管理员身份"
+
+#~ msgid "How does reputation system work?"
+#~ msgstr "什么是社区积分?"
+
+#~ msgid ""
+#~ "Anyone can ask questions and give answers, points are not necessary for "
+#~ "that."
+#~ msgstr "对于正常使用社区进行提问、回答而言,积分不是必须的。"
#~ msgid ""
-#~ "Lost your password ? Here you can ask to reset your password. Enter the "
-#~ "username you use and you will get a confirmation email with your new "
-#~ "password. This new password will be activated only after you have clicked "
-#~ "on the link in the email."
+#~ "As we've said before, users help running this site. Point system helps "
+#~ "select users who can administer this community."
#~ msgstr ""
-#~ "丢失了您的密码?你可以在这里重设密码。输入用户名你会收到新的密码的邮件。密"
-#~ "码只有您在激活邮件中的链接才会被激活。"
+#~ "我们一再声明,CNProg由你来运行和维护。如果你想帮助我们来运作CNProg,你需要"
+#~ "一定的积分等级。"
+
+#~ msgid ""
+#~ "Reputation points roughly measure how community trusts you. These points "
+#~ "are given to you directly by other members of the community."
+#~ msgstr ""
+#~ "<span class=\"yellowbg\">积分是一种用来粗略衡量社区对你有多信任的数据。</"
+#~ "span>积分不是有谁来支付或直接给予你的,而是你通过获得其他用户的支持和信"
+#~ "任“赚得”的。"
+
+#~ msgid ""
+#~ "For example, if you ask an interesting question or give a helpful answer, "
+#~ "your input will be upvoted and you will gain more trust in the community."
+#~ msgstr ""
+#~ "举例来说,如果你提了一个非常有帮助的问题或者做了很有用的回答,你将会被其他"
+#~ "用户投赞成票。"
+
+#~ msgid ""
+#~ "If on the other hand someone gives a misleading answer, the answer will "
+#~ "be voted down and he/she loses some points."
+#~ msgstr ""
+#~ "相反,你提了不受欢迎的问题,或者误导用户的回答,你将可能被其他用户投反对"
+#~ "票。每个赞成"
+
+#~ msgid ""
+#~ "Each vote in favor will generate <strong>10</strong> points, each vote "
+#~ "against will subtract <strong>2</strong> points."
+#~ msgstr ""
+#~ "票会帮你产生<strong>10</strong>个社区积分,每个反对票会相应扣除你"
+#~ "<strong>2</strong>个积分。"
+
+#~ msgid ""
+#~ "Through the votes of other people you can accumulate a maximum of "
+#~ "<strong>200</strong> points."
+#~ msgstr ""
+#~ "每天通过别人投赞成票,你最多只能产生<strong>200</strong>个积分,这是上限。"
+
+#~ msgid "After accumulating certain number of points, you can do more:"
+#~ msgstr "当你累计到一定>积分,你可以在社区做更多的事情:"
+
+# todo - check if it's indeed plural
+#~ msgid "add comments"
+#~ msgstr "添加评论"
+
+#~ msgid "retag questions"
+#~ msgstr "给任何问题整理标签"
+
+#~ msgid "edit community wiki questions"
+#~ msgstr "编辑wiki类问题"
+
+#~ msgid "edit any answer"
+#~ msgstr "编辑任何问题或答案"
+
+#~ msgid "reopen any closed questions"
+#~ msgstr "打开关闭任何人的问题"
+
+#~ msgid "delete any comment"
+#~ msgstr "删除任何一个评论"
+
+#~ msgid "delete any questions and answers and perform other moderation tasks"
+#~ msgstr "删除任何一个问题或答案,及其他管理功能"
+
+#~ msgid "To register, do I need to create new password?"
+#~ msgstr "我需要注册一个新用户吗?"
+
+#~ msgid "Why other people can edit my questions/answers?"
+#~ msgstr "为什么其他人可以修改我的问题/回答?"
+
+#~ msgid "Still have questions?"
+#~ msgstr "还有其他问题?"
+
+#~ msgid "Please ask your question, help make our community better!"
+#~ msgstr "如果您对社区还有其他疑问,请一起来完善我们的"
+
+#~ msgid ""
+#~ "No, you don't have to. You can login through any service that supports "
+#~ "OpenID, e.g. Google, Yahoo, AOL, etc."
+#~ msgstr ""
+#~ "不需要。社区提供了OpenID的登录支持,你要用Google、Yahoo等任何支持OpenID登"
+#~ "录的帐号就可以使用系统。"
+
+#~ msgid "Login now!"
+#~ msgstr "马上登录"
+
+#~ msgid ""
+#~ "So questions and answers can be edited like wiki pages by experienced "
+#~ "users of this site and this improves the overall quality of the knowledge "
+#~ "base content."
+#~ msgstr ""
+#~ "所以问题和答案都是如Wiki一样可编辑的,我们希望社区能帮助用户沉淀、积累更多"
+#~ "有用的知识和经验。"
+
+#~ msgid "If this approach is not for you, we respect your choice."
+#~ msgstr "如果您不喜欢这种方式,我们尊重你的选择。"
+
+#~ msgid "answer tips"
+#~ msgstr "受欢迎的提问"
+
+#~ msgid "try to give an answer, rather than engage into a discussion"
+#~ msgstr "建议您提的问题是可以被答复的,而不仅仅是可以讨论。"
+
+#~ msgid "gold badge: the highest honor and is very rare"
+#~ msgstr "金牌:十分罕见之最高荣耀"
+
+#~ msgid ""
+#~ "silver badge: occasionally awarded for the very high quality contributions"
+#~ msgstr "银牌:偶尔颁发之优质奖章"
+
+#~ msgid "Gold badge is very rare."
+#~ msgstr "金牌是十分罕见的。"
+
+#~ msgid "Gold badge is the highest award in this community."
+#~ msgstr "获得金牌意味着你在某个层次上已经达到了顶峰。"
+
+#~ msgid "Obtaining silver badge requires significant patience."
+#~ msgstr "银牌需要经过长时间的奋斗才能获得。"
-#~ msgid "Send new password"
-#~ msgstr "发送新密码"
+#~ msgid "%s ago"
+#~ msgstr "于%s<font class=\"darkred\">关闭</font>"
diff --git a/middleware/__init__.py b/log/cnprog.log
index e69de29b..e69de29b 100644
--- a/middleware/__init__.py
+++ b/log/cnprog.log
diff --git a/templates/404.html b/templates/404.html
index 02725854..d24edaf0 100644
--- a/templates/404.html
+++ b/templates/404.html
@@ -1,4 +1,6 @@
+<!-- template 404.html -->
{% extends "base_content.html" %}
+{% load i18n %}
{% block title %}{% spaceless %}404 Error{% endspaceless %}{% endblock %}
{% block forestyle%}
<style type="text/css">
@@ -19,30 +21,29 @@
</div>
<div id="main-body" class="">
<div style="padding:5px 0px 10px 0;line-height:25px;">
- <h3>对不起,没有找到您请求的页面!</h3>
+ <h3>{% trans "Sorry, could not find the page you requested." %}</h3>
<div style="margin-top:5px">
- 有可能是以下原因导致:<br>
+ {% trans "This might have happened for the following reasons:" %}<br>
<ul>
- <li>你正在查看的问题或者回答已经被删除;</li>
- <li>请求的地址有误 - 请核实原始URL地址;</li>
- <li>访问的页面被保护或你的积分不够,参见<a href="/faq"> faq</a>;</li>
- <li>如果你确信不该出现404错误,请<a href="http://cnprog.uservoice.com/" target="_blank">报告这个问题</a></li>
+ <li>{% trans "this question or answer has been deleted;" %}</li>
+ <li>{% trans "url has error - please check it;" %}</li>
+ <li>{% trans "the page you tried to visit is protected or you don't have sufficient points, see" %} <a href="/faq"> faq</a>;</li>
+ <li>{% trans "if you believe this error 404 should not have occured, please" %}
+ <a href="{{feedback_site_url}}" target="_blank">{% trans "report this problem" %}</a></li>
</u>
</div>
<script type="text/javascript">
var GOOG_FIXURL_LANG = 'zh-cn';
- var GOOG_FIXURL_SITE = 'http://cnprog.com/';
+ var GOOG_FIXURL_SITE = '{{site_url}}';
</script>
<script type="text/javascript" src="http://linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js"></script>
<ul>
- <li><a href="#" id="linkPrevious">返回前页 » </li>
- <li><a href="/questions">查看最新问题 » </a></li>
- <li><a href="/tags/">查看标签列表 » </a></li>
+ <li><a href="#" id="linkPrevious">{% trans "back to previous page" %} » </li>
+ <li><a href="/questions">{% trans "see all questions" %} » </a></li>
+ <li><a href="/tags/">{% trans "see all tags" %} » </a></li>
</u>
</div>
</div>
{% endblock %}
-
-
-
+<!-- end template 404.html -->
diff --git a/templates/500.html b/templates/500.html
index 2e89783a..c99774b3 100644
--- a/templates/500.html
+++ b/templates/500.html
@@ -1,4 +1,6 @@
+<!-- template 500.html -->
{% extends "base_content.html" %}
+{% load i18n %}
{% block title %}{% spaceless %}500 Error{% endspaceless %}{% endblock %}
{% block forejs %}
<script type="text/javascript">
@@ -9,25 +11,25 @@
</script>
{% endblock %}
{% block content %}
-<div id="main-bar" class="headNormal">
- 500 Server Error
+<div id="main-bar" class="">
+ <h3>
+ 500 Server Error
+ </h3>
+
</div>
-<div id="main-body" class="">
+<div id="main-body" class="headNormal">
<div style="padding:5px 0px 10px 0;line-height:25px">
- <h3>对不起,系统发生了错误,不能响应您的请求!</h3>
+ <h3>{% trans "sorry, system error"</h3>
<br>
- 系统已经记录错误日志,我们会尽快解决此问题。<br>
- 如果这个问题长时间没有被修复,请<span class="darkred"><a title="cnprog.uservoice.com" href="http://cnprog.uservoice.com/" >搜索查看当前问题的状态,或者报告新的bug</a></span>。感谢您的支持!
-
+ {% trans "system error log is recorded, error will be fixed as soon as possible" %}<br>
+ {% trans "please report the error to the site administrators if you wish" %}
<ul>
- <li><a href="#" id="linkPrevious">返回前页</li>
- <li><a href="/questions">查看最新问题</a></li>
- <li><a href="/tags/">查看标签列表</a></li>
+ <li><a href="#" id="linkPrevious">{% trans "back to previous page" %}</li>
+ <li><a href="/questions">{% trans "see latest questions" %}</a></li>
+ <li><a href="/tags/">{% trans "see tags" %}</a></li>
</u>
</div>
</div>
{% endblock %}
-
-
-
+<!-- end template 500.html -->
diff --git a/templates/answer_edit.html b/templates/answer_edit.html
index f914660a..008d9f78 100644
--- a/templates/answer_edit.html
+++ b/templates/answer_edit.html
@@ -1,11 +1,13 @@
+<!-- template answer_edit.html -->
{% extends "base.html" %}
-{% block title %}{% spaceless %}修改回答{% endspaceless %}{% endblock %}
+{% load i18n %}
+{% block title %}{% spaceless %}{% trans "Edit answer" %}{% endspaceless %}{% endblock %}
{% block forejs %}
<script type='text/javascript' src='/content/js/com.cnprog.editor.js'></script>
<script type='text/javascript' src='/content/js/com.cnprog.post.js'></script>
<script type='text/javascript' src='/content/js/jquery.validate.pack.js'></script>
- <script type='text/javascript' src='/content/js/wmd/showdown-min.js'></script>
- <script type='text/javascript' src='/content/js/wmd/wmd-min.js'></script>
+ <script type='text/javascript' src='/content/js/wmd/showdown.js'></script>
+ <script type='text/javascript' src='/content/js/wmd/wmd.js'></script>
<link rel="stylesheet" type="text/css" href="/content/js/wmd/wmd.css" />
<script type="text/javascript">
@@ -19,10 +21,10 @@
//toggle preview of editor
var display = true;
- var txt = "禁用预览";
+ var txt = "{% trans "hide preview" %}";
$('#pre-collapse').text(txt);
$('#pre-collapse').bind('click', function(){
- txt = display ? "启用预览" : "禁用预览";
+ txt = display ? "{% trans "show preview" %}" : "{% trans "hide preview" %}";
display = !display;
$('#previewer').toggle();
$('#pre-collapse').text(txt);
@@ -42,21 +44,22 @@
{% block content %}
<div id="main-bar" class="headNormal">
- 修改回答 [<a href="{{ answer.question.get_absolute_url }}#{{ answer.id }}">返回</a>]
+ {% trans "Edit answer" %} [<a href="{{ answer.question.get_absolute_url }}#{{ answer.id }}">{% trans "back" %}</a>]
</div>
<div id="main-body" class="ask-body">
<div id="askform">
<form id="fmedit" action="{% url edit_answer answer.id %}" method="post" >
- <label for="id_revision" ><strong>版本:</strong></label> <br>
+ <label for="id_revision" ><strong>{% trans "revision" %}:</strong></label> <br>
{% if revision_form.revision.errors %}{{ revision_form.revision.errors.as_ul }}{% endif %}
<div style="vertical-align:middle">
- {{ revision_form.revision }} <input type="submit" style="display:none" id="select_revision" name="select_revision" value="选择版本">
+ {{ revision_form.revision }} <input type="submit" style="display:none" id="select_revision" name="select_revision" value="{% trans "select revision" %}">
</div><br>
<div class="form-item">
<div id="wmd-button-bar" class="wmd-panel"></div>
{{ form.text }}
<span class="form-error"></span>
- <div class="preview-toggle"><span id="pre-collapse" title="打开或者关闭Markdown编辑器的实时预览">预览开关</span></div>
+ <div class="preview-toggle"><span id="pre-collapse"
+ title="{% trans "Toggle the real time Markdown editor preview" %}打">{% trans "toggle preview" %}</span></div>
<div id="previewer" class="wmd-preview"></div>
<br>
</div>
@@ -67,8 +70,8 @@
{{ form.summary.help_text }}
</div>
<br>
- <input type="submit" value="现在修改" class="submit" />
- <input type="button" value="取消" class="submit" onclick="history.back(-1);" />
+ <input type="submit" value="{% trans "Save edit" %}" class="submit" />
+ <input type="button" value="{% trans "Cancel" %}" class="submit" onclick="history.back(-1);" />
<br>
<br>
</form>
@@ -77,63 +80,9 @@
{% endblock %}
{% block sidebar %}
-<div class="boxC">
- <p class="subtitle darkred">受欢迎的提问</p>
- <div>
- <ul class="list-item">
- <li>
- <b>您的问题与编程相关吗?</b>
- </li>
- <li>
- 建议您提的问题是可以被答复的,而不仅仅是可以讨论。
- </li>
- <li>
- 请详细描述您的问题。
- </li>
- <li>
- 我们推荐您使用中文描述问题,这样可以得到更多的答复机会。
- </li>
- </ul>
- <a href="/faq/" target="_blank" title="查看常见问题" style="float:right;position:relative">faq »</a>
- <br>
- </div>
-</div>
-
-<div class="boxC">
- <p class="subtitle">Markdown快速参考</p>
- <ul class="list-item">
- <li>
- *斜体* 或者 _斜体_
-
- </li>
- <li>
- **加粗** 或者 __加粗__
-
- </li>
- <li>
- <b>链接</b>:一个[例子](http://url.com/ "标题")
-
- </li>
-
- <li>
- <b>图片</b>:![alt 文本](/path/img.jpg "标题")
-
- </li>
- <li>
- 列表:
- 1. Foo
- 2. Bar
- </li>
- <li>
- 基本的HTML标签也是支持的
- </li>
- </ul>
- <a href="http://en.wikipedia.org/wiki/Markdown" target="_blank" style="float:right;position:relative">有关Markdown详细说明 »</a>
- <br>
-</div>
-
+{% include "answer_edit_tips.html" %}
{% endblock %}
{% block endjs %}
{% endblock %}
-
+<!-- end template answer_edit.html -->
diff --git a/templates/answer_edit_tips.html b/templates/answer_edit_tips.html
new file mode 100644
index 00000000..11d1d989
--- /dev/null
+++ b/templates/answer_edit_tips.html
@@ -0,0 +1,589 @@
+
+
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
+ <title>templates/answer_edit_tips.html at f38036ae08927e3a7726b45623ba81146003b8a1 from evgenyfadeev's CNPROG - GitHub</title>
+ <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub" />
+ <link rel="fluid-icon" href="http://github.com/fluidicon.png" title="GitHub" />
+
+
+ <link href="http://assets1.github.com/stylesheets/bundle.css?2a110633f941d64a2db1f0670742ca89122869ad" media="screen" rel="stylesheet" type="text/css" />
+
+
+
+
+ <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
+ <script src="http://assets0.github.com/javascripts/bundle.js?2a110633f941d64a2db1f0670742ca89122869ad" type="text/javascript"></script>
+
+
+
+
+
+
+
+ <link href="http://github.com/feeds/evgenyfadeev/commits/CNPROG/f38036ae08927e3a7726b45623ba81146003b8a1" rel="alternate" title="Recent Commits to CNPROG:f38036ae08927e3a7726b45623ba81146003b8a1" type="application/atom+xml" />
+
+ <meta name="description" content="An open source Q&amp;A(question and answer) eco-system " />
+
+
+
+
+ <script type="text/javascript">
+ github_user = null
+ </script>
+ </head>
+
+
+
+ <body>
+
+
+ <div id="main">
+ <div id="header" class="">
+ <div class="site">
+ <div class="logo">
+ <a href="http://github.com"><img src="/images/modules/header/logov3.png" alt="github" /></a>
+ </div>
+
+ <div class="topsearch">
+ <form action="/search" id="top_search_form" method="get">
+ <input type="search" class="search" name="q" /> <input type="submit" value="Search" />
+ <input type="hidden" name="type" value="Everything" />
+ <input type="hidden" name="repo" value="" />
+ <input type="hidden" name="langOverride" value="" />
+ <input type="hidden" name="start_value" value="1" />
+ </form>
+ <div class="links">
+ <a href="/repositories">Browse</a> | <a href="/guides">Guides</a> | <a href="/search">Advanced</a>
+ </div>
+</div>
+
+
+ <div class="actions">
+
+ <a href="http://github.com">Home</a>
+ <a href="/plans"><b><u>Pricing and Signup</u></b></a>
+ <a href="http://github.com/popular/forked">Repositories</a>
+
+ <a href="/blog">Blog</a>
+
+ <a href="https://github.com/login">Login</a>
+ </div>
+
+ </div>
+ </div>
+
+
+
+ <div id="repo_menu">
+ <div class="site">
+ <ul>
+
+ <li class="active"><a href="http://github.com/evgenyfadeev/CNPROG/tree/">Source</a></li>
+
+ <li class=""><a href="http://github.com/evgenyfadeev/CNPROG/commits/">Commits</a></li>
+
+
+ <li class=""><a href="/evgenyfadeev/CNPROG/network">Network (15)</a></li>
+
+
+
+
+
+
+
+ <li class=""><a href="/evgenyfadeev/CNPROG/downloads">Downloads (0)</a></li>
+
+
+
+
+ <li class=""><a href="http://wiki.github.com/evgenyfadeev/CNPROG">Wiki (1)</a></li>
+
+
+ <li class=""><a href="/evgenyfadeev/CNPROG/graphs">Graphs</a></li>
+
+
+
+
+ </ul>
+ </div>
+ </div>
+
+ <div id="repo_sub_menu">
+ <div class="site">
+ <div class="joiner"></div>
+
+
+
+
+
+
+
+ </div>
+ </div>
+
+ <div class="site">
+
+
+
+
+
+
+<div id="repos">
+
+
+
+<script type="text/javascript">
+ GitHub.currentCommitRef = "f38036ae08927e3a7726b45623ba81146003b8a1"
+ GitHub.currentRepoOwner = "evgenyfadeev"
+ GitHub.currentRepo = "CNPROG"
+
+</script>
+
+
+
+ <div class="repo public" id="repo_details">
+ <div class="title">
+ <div class="path">
+ <a href="/evgenyfadeev">evgenyfadeev</a> / <b><a href="http://github.com/evgenyfadeev/CNPROG/tree">CNPROG</a></b>
+
+
+
+ <span id="edit_button" style="display:none;">
+ <a href="/evgenyfadeev/CNPROG/edit"><img alt="edit" class="button" src="http://assets0.github.com/images/modules/repos/edit_button.png?2a110633f941d64a2db1f0670742ca89122869ad" /></a>
+ </span>
+
+
+ <span id="pull_request_button" style="display:none;">
+ <a href="/evgenyfadeev/CNPROG/pull_request/" class="pull_request_button"><img alt="pull request" class="button" src="http://assets0.github.com/images/modules/repos/pull_request_button.png?2a110633f941d64a2db1f0670742ca89122869ad" /></a>
+ </span>
+
+ <span id="fast_forward_button" style="display:none;">
+ <a href="/evgenyfadeev/CNPROG/fast_forward" id="ff_button"><img alt="fast forward" class="button" src="http://assets3.github.com/images/modules/repos/fast_forward_button.png?2a110633f941d64a2db1f0670742ca89122869ad" /></a>
+ </span>
+
+ <span id="fork_button">
+ <a href="/evgenyfadeev/CNPROG/fork"><img alt="fork" class="button" src="http://assets0.github.com/images/modules/repos/fork_button.png?2a110633f941d64a2db1f0670742ca89122869ad" /></a>
+ </span>
+
+
+ <span id="watch_button">
+ <a href="/evgenyfadeev/CNPROG/toggle_watch" class="toggle_watch"><img alt="watch" class="button" src="http://assets0.github.com/images/modules/repos/watch_button.png?2a110633f941d64a2db1f0670742ca89122869ad" /></a>
+ </span>
+
+ <span id="unwatch_button" style="display:none;">
+ <a href="/evgenyfadeev/CNPROG/toggle_watch" class="toggle_watch"><img alt="watch" class="button" src="http://assets3.github.com/images/modules/repos/unwatch_button.png?2a110633f941d64a2db1f0670742ca89122869ad" /></a>
+ </span>
+
+
+ <a href="#" id="download_button" rel="evgenyfadeev/CNPROG"><img alt="download tarball" class="button" src="http://assets2.github.com/images/modules/repos/download_button.png?2a110633f941d64a2db1f0670742ca89122869ad" /></a>
+
+
+ </div>
+
+ <div class="security private_security" style="display:none">
+ <a href="#private_repo" rel="facebox"><img src="/images/icons/private.png" alt="private" /></a>
+ </div>
+
+ <div id="private_repo" class="hidden">
+ This repository is private.
+ All pages are served over SSL and all pushing and pulling is done over SSH.
+ No one may fork, clone, or view it unless they are added as a <a href="/evgenyfadeev/CNPROG/edit">member</a>.
+
+ <br/>
+ <br/>
+ Every repository with this icon (<img src="/images/icons/private.png" alt="private" />) is private.
+ </div>
+
+ <div class="security public_security" style="">
+ <a href="#public_repo" rel="facebox"><img src="/images/icons/public.png" alt="public" /></a>
+ </div>
+
+ <div id="public_repo" class="hidden">
+ This repository is public.
+ Anyone may fork, clone, or view it.
+
+ <br/>
+ <br/>
+ Every repository with this icon (<img src="/images/icons/public.png" alt="public" />) is public.
+ </div>
+
+
+
+ <div class="flexipill">
+ <a href="/evgenyfadeev/CNPROG/network">
+ <table cellpadding="0" cellspacing="0">
+ <tr><td><img alt="Forks" src="http://assets1.github.com/images/modules/repos/pills/forks.png?2a110633f941d64a2db1f0670742ca89122869ad" /></td><td class="middle"><span>14</span></td><td><img alt="Right" src="http://assets1.github.com/images/modules/repos/pills/right.png?2a110633f941d64a2db1f0670742ca89122869ad" /></td></tr>
+ </table>
+ </a>
+ </div>
+
+ <div class="flexipill">
+ <a href="/evgenyfadeev/CNPROG/watchers">
+ <table cellpadding="0" cellspacing="0">
+ <tr><td><img alt="Watchers" src="http://assets0.github.com/images/modules/repos/pills/watchers.png?2a110633f941d64a2db1f0670742ca89122869ad" /></td><td class="middle"><span>2</span></td><td><img alt="Right" src="http://assets1.github.com/images/modules/repos/pills/right.png?2a110633f941d64a2db1f0670742ca89122869ad" /></td></tr>
+ </table>
+ </a>
+ </div>
+ </div>
+
+ <div class="meta">
+ <table>
+
+ <tr>
+ <td class="label" colspan="2">
+ <em>Fork of <a href="/chagel/CNPROG/tree">chagel/CNPROG</a></em>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="label">Description:</td>
+ <td>
+ <span id="repository_description" rel="/evgenyfadeev/CNPROG/edit/update">An open source Q&amp;A(question and answer) eco-system </span>
+ <a href="#description" class="edit_link action" style="display:none;">edit</a>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="label">Homepage:</td>
+ <td>
+
+ <span id="repository_homepage" rel="/evgenyfadeev/CNPROG/edit/update">
+ <a href="http://www.cnprog.com">http://www.cnprog.com</a>
+ </span>
+ <a href="#homepage" class="edit_link action" style="display:none;">edit</a>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="label"><span id="public_clone_text" style="display:none;">Public&nbsp;</span>Clone&nbsp;URL:</td>
+
+ <td>
+ <a href="git://github.com/evgenyfadeev/CNPROG.git" class="git_url_facebox" rel="#git-clone">git://github.com/evgenyfadeev/CNPROG.git</a>
+ <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
+ width="110"
+ height="14"
+ class="clippy"
+ id="clippy" >
+ <param name="movie" value="/flash/clippy.swf"/>
+ <param name="allowScriptAccess" value="always" />
+ <param name="quality" value="high" />
+ <param name="scale" value="noscale" />
+ <param NAME="FlashVars" value="text=git://github.com/evgenyfadeev/CNPROG.git">
+ <param name="bgcolor" value="#F0F0F0">
+ <param name="wmode" value="opaque">
+ <embed src="/flash/clippy.swf"
+ width="110"
+ height="14"
+ name="clippy"
+ quality="high"
+ allowScriptAccess="always"
+ type="application/x-shockwave-flash"
+ pluginspage="http://www.macromedia.com/go/getflashplayer"
+ FlashVars="text=git://github.com/evgenyfadeev/CNPROG.git"
+ bgcolor="#F0F0F0"
+ wmode="opaque"
+ />
+ </object>
+
+ <div id="git-clone" style="display:none;">
+ Give this clone URL to anyone.
+ <br/>
+ <code>git clone git://github.com/evgenyfadeev/CNPROG.git </code>
+ </div>
+ </td>
+ </tr>
+
+
+ <tr id="private_clone_url" style="display:none;">
+ <td class="label">Your Clone URL:</td>
+
+ <td>
+
+ <div id="private-clone-url">
+ <a href="git@github.com:evgenyfadeev/CNPROG.git" class="git_url_facebox" rel="#your-git-clone">git@github.com:evgenyfadeev/CNPROG.git</a>
+ <input type="text" value="git@github.com:evgenyfadeev/CNPROG.git" style="display: none;" />
+ <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
+ width="110"
+ height="14"
+ class="clippy"
+ id="clippy" >
+ <param name="movie" value="/flash/clippy.swf"/>
+ <param name="allowScriptAccess" value="always" />
+ <param name="quality" value="high" />
+ <param name="scale" value="noscale" />
+ <param NAME="FlashVars" value="text=git@github.com:evgenyfadeev/CNPROG.git">
+ <param name="bgcolor" value="#F0F0F0">
+ <param name="wmode" value="opaque">
+ <embed src="/flash/clippy.swf"
+ width="110"
+ height="14"
+ name="clippy"
+ quality="high"
+ allowScriptAccess="always"
+ type="application/x-shockwave-flash"
+ pluginspage="http://www.macromedia.com/go/getflashplayer"
+ FlashVars="text=git@github.com:evgenyfadeev/CNPROG.git"
+ bgcolor="#F0F0F0"
+ wmode="opaque"
+ />
+ </object>
+
+ </div>
+
+ <div id="your-git-clone" style="display:none;">
+ Use this clone URL yourself.
+ <br/>
+ <code>git clone git@github.com:evgenyfadeev/CNPROG.git </code>
+ </div>
+ </td>
+ </tr>
+
+
+
+
+
+
+ </table>
+
+ </div>
+ </div>
+
+
+
+
+
+
+</div>
+
+
+ <div id="commit">
+ <div class="group">
+
+ <div class="envelope commit">
+ <div class="human">
+
+ <div class="message"><pre><a href="/evgenyfadeev/CNPROG/commit/f38036ae08927e3a7726b45623ba81146003b8a1">added APP_TITLE, APP_KEYWORDS and APP_DESCRIPTION</a> </pre></div>
+
+
+ <div class="actor">
+ <div class="gravatar">
+
+ <img alt="" height="30" src="http://www.gravatar.com/avatar/db77fe6f52095bd53cbd53a406e2c4b2?s=30&amp;d=http%3A%2F%2Fgithub.com%2Fimages%2Fgravatars%2Fgravatar-30.png" width="30" />
+ </div>
+ <div class="name"><a href="/evgenyfadeev">evgenyfadeev</a> <span>(author)</span></div>
+ <div class="date">
+ <abbr class="relatize" title="2009-07-27 17:44:51">Mon Jul 27 17:44:51 -0700 2009</abbr>
+ </div>
+ </div>
+
+
+
+ </div>
+ <div class="machine">
+ <span>c</span>ommit&nbsp;&nbsp;<a href="/evgenyfadeev/CNPROG/commit/f38036ae08927e3a7726b45623ba81146003b8a1" hotkey="c">f38036ae08927e3a7726b45623ba81146003b8a1</a><br />
+ <span>t</span>ree&nbsp;&nbsp;&nbsp;&nbsp;<a href="/evgenyfadeev/CNPROG/tree/f38036ae08927e3a7726b45623ba81146003b8a1/templates/answer_edit_tips.html" hotkey="t">92408af2557eb7b6677495a3bdf4e39c8a47af62</a><br />
+
+
+ <span>p</span>arent&nbsp;
+
+ <a href="/evgenyfadeev/CNPROG/commit/464c14f8e63cc1df409f2f72a1871d364d41b0d7" hotkey="p">464c14f8e63cc1df409f2f72a1871d364d41b0d7</a>
+
+
+ </div>
+ </div>
+
+ </div>
+ </div>
+
+
+
+
+ <div id="path">
+ <b><a href="/evgenyfadeev/CNPROG/tree/f38036ae08927e3a7726b45623ba81146003b8a1">CNPROG</a></b> / <a href="/evgenyfadeev/CNPROG/tree/f38036ae08927e3a7726b45623ba81146003b8a1/templates">templates</a> / answer_edit_tips.html <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
+ width="110"
+ height="14"
+ class="clippy"
+ id="clippy" >
+ <param name="movie" value="/flash/clippy.swf"/>
+ <param name="allowScriptAccess" value="always" />
+ <param name="quality" value="high" />
+ <param name="scale" value="noscale" />
+ <param NAME="FlashVars" value="text=templates/answer_edit_tips.html">
+ <param name="bgcolor" value="#FFFFFF">
+ <param name="wmode" value="opaque">
+ <embed src="/flash/clippy.swf"
+ width="110"
+ height="14"
+ name="clippy"
+ quality="high"
+ allowScriptAccess="always"
+ type="application/x-shockwave-flash"
+ pluginspage="http://www.macromedia.com/go/getflashplayer"
+ FlashVars="text=templates/answer_edit_tips.html"
+ bgcolor="#FFFFFF"
+ wmode="opaque"
+ />
+ </object>
+
+ </div>
+
+ <div id="files">
+ <div class="file">
+ <div class="meta">
+ <div class="info">
+ <span>100644</span>
+ <span>55 lines (50 sloc)</span>
+ <span>1.685 kb</span>
+ </div>
+ <div class="actions">
+
+ <a href="/evgenyfadeev/CNPROG/raw/f38036ae08927e3a7726b45623ba81146003b8a1/templates/answer_edit_tips.html" id="raw-url">raw</a>
+
+ <a href="/evgenyfadeev/CNPROG/blame/f38036ae08927e3a7726b45623ba81146003b8a1/templates/answer_edit_tips.html">blame</a>
+
+ <a href="/evgenyfadeev/CNPROG/commits/master/templates/answer_edit_tips.html">history</a>
+ </div>
+ </div>
+
+ <div class="data syntax">
+
+ <table cellpadding="0" cellspacing="0">
+ <tr>
+ <td>
+
+ <pre class="line_numbers">
+<span id="LID1" rel="#L1">1</span>
+<span id="LID2" rel="#L2">2</span>
+<span id="LID3" rel="#L3">3</span>
+<span id="LID4" rel="#L4">4</span>
+<span id="LID5" rel="#L5">5</span>
+<span id="LID6" rel="#L6">6</span>
+<span id="LID7" rel="#L7">7</span>
+<span id="LID8" rel="#L8">8</span>
+<span id="LID9" rel="#L9">9</span>
+<span id="LID10" rel="#L10">10</span>
+<span id="LID11" rel="#L11">11</span>
+<span id="LID12" rel="#L12">12</span>
+<span id="LID13" rel="#L13">13</span>
+<span id="LID14" rel="#L14">14</span>
+<span id="LID15" rel="#L15">15</span>
+<span id="LID16" rel="#L16">16</span>
+<span id="LID17" rel="#L17">17</span>
+<span id="LID18" rel="#L18">18</span>
+<span id="LID19" rel="#L19">19</span>
+<span id="LID20" rel="#L20">20</span>
+<span id="LID21" rel="#L21">21</span>
+<span id="LID22" rel="#L22">22</span>
+<span id="LID23" rel="#L23">23</span>
+<span id="LID24" rel="#L24">24</span>
+<span id="LID25" rel="#L25">25</span>
+<span id="LID26" rel="#L26">26</span>
+<span id="LID27" rel="#L27">27</span>
+<span id="LID28" rel="#L28">28</span>
+<span id="LID29" rel="#L29">29</span>
+<span id="LID30" rel="#L30">30</span>
+<span id="LID31" rel="#L31">31</span>
+<span id="LID32" rel="#L32">32</span>
+<span id="LID33" rel="#L33">33</span>
+<span id="LID34" rel="#L34">34</span>
+<span id="LID35" rel="#L35">35</span>
+<span id="LID36" rel="#L36">36</span>
+<span id="LID37" rel="#L37">37</span>
+<span id="LID38" rel="#L38">38</span>
+<span id="LID39" rel="#L39">39</span>
+<span id="LID40" rel="#L40">40</span>
+<span id="LID41" rel="#L41">41</span>
+<span id="LID42" rel="#L42">42</span>
+<span id="LID43" rel="#L43">43</span>
+<span id="LID44" rel="#L44">44</span>
+<span id="LID45" rel="#L45">45</span>
+<span id="LID46" rel="#L46">46</span>
+<span id="LID47" rel="#L47">47</span>
+<span id="LID48" rel="#L48">48</span>
+<span id="LID49" rel="#L49">49</span>
+<span id="LID50" rel="#L50">50</span>
+<span id="LID51" rel="#L51">51</span>
+<span id="LID52" rel="#L52">52</span>
+<span id="LID53" rel="#L53">53</span>
+<span id="LID54" rel="#L54">54</span>
+<span id="LID55" rel="#L55">55</span>
+</pre>
+ </td>
+ <td width="100%">
+
+
+ <div class="highlight"><pre><div class="line" id="LC1"><span class="c">&lt;!-- template answer_edit_tips.html --&gt;</span></div><div class="line" id="LC2">{% load i18n %}</div><div class="line" id="LC3"><span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">&quot;boxC&quot;</span><span class="nt">&gt;</span></div><div class="line" id="LC4">&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;p</span> <span class="na">class=</span><span class="s">&quot;subtitle darkred&quot;</span><span class="nt">&gt;</span>{% trans &quot;answer tips&quot; %}<span class="nt">&lt;/p&gt;</span></div><div class="line" id="LC5">&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;div&gt;</span></div><div class="line" id="LC6">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;ul</span> <span class="na">class=</span><span class="s">&quot;list-item&quot;</span><span class="nt">&gt;</span></div><div class="line" id="LC7">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;li&gt;</span> <span class="nt">&lt;b&gt;</span>{% trans &quot;please make your answer relevant to this community&quot; %}<span class="nt">&lt;/b&gt;</span></div><div class="line" id="LC8">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;/li&gt;</span></div><div class="line" id="LC9">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;li&gt;</span></div><div class="line" id="LC10">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{% trans &quot;try to give an answer, rather than engage into a discussion&quot; %}</div><div class="line" id="LC11">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;/li&gt;</span></div><div class="line" id="LC12">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;li&gt;</span></div><div class="line" id="LC13">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{% trans &quot;please try to provide details&quot; %}</div><div class="line" id="LC14">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;/li&gt;</span></div><div class="line" id="LC15">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;li&gt;</span></div><div class="line" id="LC16"> {% trans &quot;be clear and concise&quot; %}</div><div class="line" id="LC17">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;/li&gt;</span></div><div class="line" id="LC18">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;/ul&gt;</span></div><div class="line" id="LC19">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">&quot;/faq/&quot;</span> <span class="na">target=</span><span class="s">&quot;_blank&quot;</span> <span class="na">title=</span><span class="s">&quot;{% trans &quot;</span><span class="na">see</span> <span class="na">frequently</span> <span class="na">asked</span> <span class="na">questions</span><span class="err">&quot;</span> <span class="err">%}&quot;</span> <span class="na">style=</span><span class="s">&quot;float:right;position:relative&quot;</span><span class="nt">&gt;</span>faq »<span class="nt">&lt;/a&gt;</span></div><div class="line" id="LC20">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;br&gt;</span> </div><div class="line" id="LC21">&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;/div&gt;</span></div><div class="line" id="LC22"><span class="nt">&lt;/div&gt;</span></div><div class="line" id="LC23">&nbsp;</div><div class="line" id="LC24"><span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">&quot;boxC&quot;</span><span class="nt">&gt;</span></div><div class="line" id="LC25">&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;p</span> <span class="na">class=</span><span class="s">&quot;subtitle&quot;</span><span class="nt">&gt;</span>{% trans &quot;Markdown tips&quot; %}<span class="nt">&lt;/p&gt;</span></div><div class="line" id="LC26">&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;ul</span> <span class="na">class=</span><span class="s">&quot;list-item&quot;</span><span class="nt">&gt;</span></div><div class="line" id="LC27">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;li&gt;</span></div><div class="line" id="LC28">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{% trans &quot;*italic* or __italic__&quot; %}</div><div class="line" id="LC29">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;/li&gt;</span></div><div class="line" id="LC30">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;li&gt;</span></div><div class="line" id="LC31"> {% trans &quot;**bold** or __bold__&quot; %}</div><div class="line" id="LC32">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;/li&gt;</span></div><div class="line" id="LC33">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;li&gt;</span></div><div class="line" id="LC34">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;b&gt;</span>{% trans &quot;link&quot; %}<span class="nt">&lt;/b&gt;</span>:[{% trans &quot;text&quot; %}](http://url.com/ &quot;{% trans &quot;title&quot; %}&quot;)</div><div class="line" id="LC35">&nbsp;</div><div class="line" id="LC36">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;/li&gt;</span></div><div class="line" id="LC37">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div><div class="line" id="LC38">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;li&gt;</span></div><div class="line" id="LC39">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;b&gt;</span>{% trans &quot;image&quot; %}<span class="nt">&lt;/b&gt;</span>:![alt {% trans &quot;text&quot; %}](/path/img.jpg &quot;{% trans &quot;title&quot; %}&quot;)</div><div class="line" id="LC40">&nbsp;</div><div class="line" id="LC41">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;/li&gt;</span></div><div class="line" id="LC42">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;li&gt;</span></div><div class="line" id="LC43"> {% trans &quot;numbered list:&quot; %}</div><div class="line" id="LC44">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. Foo</div><div class="line" id="LC45">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. Bar</div><div class="line" id="LC46">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;/li&gt;</span></div><div class="line" id="LC47">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;li&gt;</span></div><div class="line" id="LC48"> {% trans &quot;basic HTML tags are also supported&quot; %}</div><div class="line" id="LC49">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;/li&gt;</span></div><div class="line" id="LC50">&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;/ul&gt;</span></div><div class="line" id="LC51">&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">&quot;http://en.wikipedia.org/wiki/Markdown&quot;</span> <span class="na">target=</span><span class="s">&quot;_blank&quot;</span> <span class="na">style=</span><span class="s">&quot;float:right;position:relative&quot;</span><span class="nt">&gt;</span>{% trans &quot;learn more about Markdown&quot; %} »<span class="nt">&lt;/a&gt;</span></div><div class="line" id="LC52">&nbsp;&nbsp;&nbsp;&nbsp;<span class="nt">&lt;br&gt;</span> </div><div class="line" id="LC53"><span class="nt">&lt;/div&gt;</span></div><div class="line" id="LC54"><span class="c">&lt;!-- end template answer_edit_tips.html --&gt;</span></div><div class="line" id="LC55">&nbsp;</div></pre></div>
+
+ </td>
+ </tr>
+ </table>
+
+ </div>
+
+
+ </div>
+ </div>
+
+
+
+
+ </div>
+
+
+
+ <div class="push"></div>
+ </div>
+
+ <div id="footer">
+ <div class="site">
+ <div class="info">
+ <div class="links">
+ <a href="http://github.com/blog"><b>Blog</b></a> |
+ <a href="http://support.github.com/">Support</a> |
+ <a href="http://github.com/training">Training</a> |
+ <a href="http://github.com/contact">Contact</a> |
+ <a href="http://develop.github.com">API</a> |
+ <a href="http://twitter.com/github">Status</a> |
+ <a href="http://twitter.com/github">GitHub on Twitter</a> |
+ <a href="http://github.com/guides/home">Help</a>
+
+ </div>
+ <div class="company">
+ <span id="_rrt" title="1.62186s from xc88-s00009">GitHub</span>&trade;
+ is <a href="http://logicalawesome.com/">Logical Awesome</a> &copy;2009 | <a href="/site/terms">Terms of Service</a> | <a href="/site/privacy">Privacy Policy</a>
+ </div>
+ </div>
+ <div class="sponsor">
+ <a href="http://engineyard.com"><img src="/images/modules/footer/ey-rubyhosting.png" alt="Engine Yard" /></a>
+ </div>
+ </div>
+ </div>
+
+ <div id="coming_soon" style="display:none;">
+ This feature is coming soon. Sit tight!
+ </div>
+
+
+ <script type="text/javascript">
+ var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+ document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+ </script>
+ <script type="text/javascript">
+ var pageTracker = _gat._getTracker("UA-3769691-2");
+ pageTracker._initData();
+ pageTracker._trackPageview();
+ </script>
+
+
+ </body>
+</html>
+
diff --git a/templates/ask.html b/templates/ask.html
index ecd176bc..1b00a701 100644
--- a/templates/ask.html
+++ b/templates/ask.html
@@ -1,11 +1,13 @@
+<!-- template ask.html -->
{% extends "base.html" %}
-{% block title %}{% spaceless %}我要提问{% endspaceless %}{% endblock %}
+{% load i18n %}
+{% block title %}{% spaceless %}{% trans "Ask a question" %}{% endspaceless %}{% endblock %}
{% block forejs %}
<script type='text/javascript' src='/content/js/com.cnprog.editor.js'></script>
- <script type='text/javascript' src='/content/js/com.cnprog.post.pack.js'></script>
+ <script type='text/javascript' src='/content/js/com.cnprog.post.js'></script>
<script type='text/javascript' src='/content/js/jquery.validate.pack.js'></script>
- <script type='text/javascript' src='/content/js/wmd/showdown-min.js'></script>
- <script type='text/javascript' src='/content/js/wmd/wmd-min.js'></script>
+ <script type='text/javascript' src='/content/js/wmd/showdown.js'></script>
+ <script type='text/javascript' src='/content/js/wmd/wmd.js'></script>
<link rel="stylesheet" type="text/css" href="/content/js/wmd/wmd.css" />
<script type="text/javascript">
$().ready(function(){
@@ -18,11 +20,12 @@
captureLength: 5, callback: lanai.highlightSyntax});
//toggle preview of editor
+ //todo remove copy-paste
var display = true;
- var txt = "[禁用预览]";
+ var txt = "[{% trans "hide preview" %}]";
$('#pre-collapse').text(txt);
$('#pre-collapse').bind('click', function(){
- txt = display ? "[启用预览]" : "[禁用预览]";
+ txt = display ? "[{% trans "show preview" %}]" : "[{% trans "hide preview" %}]";
display = !display;
$('#previewer').toggle();
$('#pre-collapse').text(txt);
@@ -54,7 +57,7 @@
{% block content %}
<div id="main-bar" class="headNormal">
- 我要提问
+ {% trans "Ask a question" %}
</div>
<div id="main-body" class="ask-body">
<div id="askform">
@@ -75,7 +78,7 @@
<table width="100%">
<tr>
<td>
- <span id="pre-collapse" title="打开或者关闭Markdown编辑器的实时预览">预览开关</span>
+ <span id="pre-collapse" title="{% trans "Toggle the real time Markdown editor preview" %}">{% trans "toggle preview" %}</span>
</td>
<td style="text-align:right;">
{{ form.wiki }} <span style="font-weight:normal;cursor:help" title="{{form.wiki.help_text}}">{{ form.wiki.label_tag }} </span>
@@ -100,10 +103,10 @@
<table id="login-box">
<tr>
<td style="vertical-align:middle;">
- <strong>使用 <a href="http://openid.net/" title="了解更多有关OpenID的信息">OpenID</a> 登录:</strong><br>
+ <strong>{% trans "Use" %} <a href="http://openid.net/" title="{% trans "learn more about OpenID" %}">OpenID</a> {% trans "Login" %}:</strong><br>
{{ form.openid }}
<div class="title-desc">
- 获取您自己的<a href="https://www.myopenid.com/" target=="_blank">OpenID</a>。
+ {% trans "Get your own "%} <a href="https://www.myopenid.com/" target=="_blank">OpenID</a>。
</div>
</td>
<td style="vertical-align:middle; padding: 0px 40px 0px 40px">
@@ -111,17 +114,17 @@
<div style="width:1px; border-left:solid 1px #999; height:8em; margin:auto;"></div>
</td>
<td style="vertical-align:middle;">
- <strong>您的大名:</strong><br>
+ <strong>{% trans "User name" %}:</strong><br>
{{ form.user }}
<p>
- <strong>电子邮件:(不会公开显示)</strong><br>
+ <strong>{% trans "Email: (won't be shown to anyone)" %}:</strong><br>
{{ form.email }}
</p>
</td>
</tr>
</table>
{% endif %}
- <input type="submit" value="现在提问" class="submit" />
+ <input type="submit" value="{% trans "Ask your question" %}" class="submit" />
<br><br>
</form>
</div>
@@ -129,63 +132,9 @@
{% endblock %}
{% block sidebar %}
-<div class="boxC">
- <p class="subtitle darkred">受欢迎的提问</p>
- <div>
- <ul class="list-item">
- <li>
- <b>您的问题与编程相关吗?</b>
- </li>
- <li>
- 建议您提的问题是可以被答复的,而不仅仅是可以讨论。
- </li>
- <li>
- 请详细描述您的问题。
- </li>
- <li>
- 我们推荐您使用中文描述问题,这样可以得到更多的答复机会。
- </li>
- </ul>
- <a href="/faq/" target="_blank" title="查看常见问题" style="float:right;position:relative">faq »</a>
- <br>
- </div>
-</div>
-
-<div class="boxC">
- <p class="subtitle">Markdown快速参考</p>
- <ul class="list-item">
- <li>
- *斜体* 或者 _斜体_
-
- </li>
- <li>
- **加粗** 或者 __加粗__
-
- </li>
- <li>
- <b>链接</b>:一个[例子](http://url.com/ "标题")
-
- </li>
-
- <li>
- <b>图片</b>:![alt 文本](/path/img.jpg "标题")
-
- </li>
- <li>
- 列表:
- 1. Foo
- 2. Bar
- </li>
- <li>
- 基本的HTML标签也是支持的
- </li>
- </ul>
- <a href="http://en.wikipedia.org/wiki/Markdown" target="_blank" style="float:right;position:relative">有关Markdown详细说明 »</a>
- <br>
-</div>
-
+{% include "question_edit_tips.html" %}
{% endblock %}
{% block endjs %}
{% endblock %}
-
+<!-- end template ask.html -->
diff --git a/templates/authopenid/changeemail.html b/templates/authopenid/changeemail.html
index a6c53a64..99984b3f 100644
--- a/templates/authopenid/changeemail.html
+++ b/templates/authopenid/changeemail.html
@@ -1,9 +1,5 @@
{% extends "base_content.html" %}
{% load i18n %}
-
-
-
-
{% block content %}
<div id="main-bar" class="">
<h3>
diff --git a/templates/authopenid/complete.html b/templates/authopenid/complete.html
index fd243f28..28c38a04 100644
--- a/templates/authopenid/complete.html
+++ b/templates/authopenid/complete.html
@@ -1,19 +1,19 @@
{% extends "base.html" %}
+{% load i18n %}
{% block head %}{% endblock %}
-{% block title %}{% spaceless %}绑定OpenID{% endspaceless %}{% endblock %}
+{% block title %}{% spaceless %}{% trans "Connect your OpenID with this site" %}{% endspaceless %}{% endblock %}
{% block content %}
<div id="main-bar" class="headNormal">
- 绑定OpenID帐号
-
+ {% trans "Connect your OpenID with your account on this site" %}
</div>
<p id="completetxt" >
- <h3>您的OpenID帐号已经验证通过! 请完成最后一步 - 绑定OpenID到您的帐号。</h3>
- <p style="display:none">输入您的新帐号或者指定已经存在的帐号。</p>
+ <h3>{% trans "Your OpenID is accepted. Please complete this to finish registration." %}</h3>
+ <p style="display:none">{% trans "This account already exists, please use another." %}</p>
</p>
{% if form1.errors %}
<p class="errors">
- <span class="big">请注意以下错误:</span><br>
+ <span class="big">{% trans "Sorry, looks like we have some errors:" %}</span><br>
<ul class="error-list">
{% if form1.username.errors %}
<li><span class="error">{{ form1.username.errors|join:", " }}</span></li>
@@ -26,7 +26,7 @@
{% endif %}
{% if form2.errors %}
<p class="errors">
- <span class="big">请注意以下错误:</span><br>
+ <span class="big">{% trans "Sorry, looks like we have some errors:" %}</span><br>
<ul class="error-list">
{% if form2.username.errors %}
<li><span class="error">{{ form2.username.errors|join:", " }}</span></li>
@@ -42,10 +42,10 @@
<form name="fregister" action="{% url user_register %}" method="POST">
{{ form.next }}
<fieldset style="padding:10px">
- <legend class="big">新帐号</legend>
- <div class="form-row"><label for="id_username">用户名(<i>在社区显示友好名称,不可更改</i>)</label><br />{{ form1.username }}</div>
- <div class="form-row"><label for="id_email">电子邮件(<i>用于头像显示服务</i>)</label><br />{{ form1.email }}</div>
- <div class="submit-row"><input type="submit" class="submit" name="bnewaccount" value="创建帐号"></div>
+ <legend class="big">{% trans "New account" %}</legend>
+ <div class="form-row"><label for="id_username">{% trans "User name (<i>will be shown to others, cannot be modified</i>)" %}</label><br />{{ form1.username }}</div>
+ <div class="form-row"><label for="id_email">{% trans "Email (<i>not shared with anyone</i>)" %}</label><br />{{ form1.email }}</div>
+ <div class="submit-row"><input type="submit" class="submit" name="bnewaccount" value="{% trans "create account" %}"></div>
</fieldset>
</form>
</div>
@@ -53,14 +53,15 @@
<form name="fverify" action="{% url user_register %}" method="POST">
{{ form.next }}
<fieldset style="padding:10px">
- <legend class="big">已经存在的用户</legend>
- <div class="form-row"><label for="id_username">用户名</label><br />{{ form2.username }}</div>
- <div class="form-row"><label for="id_passwordl">密码</label><br />{{ form2.password }}</div>
- <div class="submit-row"><input type="submit" class="submit" name="bverify" value="确认"> <a href="">忘记密码?</a></div>
+ <legend class="big">{% trans "Existing account" %}</legend>
+ <div class="form-row"><label for="id_username">{% trans "user name" %}</label><br />{{ form2.username }}</div>
+ <div class="form-row"><label for="id_passwordl">{% trans "password" %}</label><br />{{ form2.password }}</div>
+ <!--todo double check translation from chinese 确认 = "Register" -->
+ <div class="submit-row">
+ <input type="submit" class="submit" name="bverify" value="{% trans "Register" %}">
+ <a href="">{% trans "Forgot your password?" %}</a>
+ </div>
</fieldset>
</form>
</div>
{% endblock %}
-
-
-
diff --git a/templates/authopenid/sendpw.html b/templates/authopenid/sendpw.html
index 237a5cf6..a9488c4c 100644
--- a/templates/authopenid/sendpw.html
+++ b/templates/authopenid/sendpw.html
@@ -1,17 +1,18 @@
{% extends "base.html" %}
-{% block title %}{% spaceless %}发送新密码{% endspaceless %}{% endblock %}
+{% load i18n %}
+{% block title %}{% spaceless %}{% trans "Send new password" %}{% endspaceless %}{% endblock %}
{% block content %}
<div id="main-bar" class="">
- <h3 >发送新密码</h3>
+ <h3>{% trans "Send new password" %}</h3>
</div>
<div class="paragraph">
-丢失了您的密码? 你可以在这里重设密码。<br>
-请输入用户名,新的密码会发送到你注册时候填写的电子邮件。
+{% trans "Lost your password? No problem - here you can reset it." %}<br>
+{% trans "Please enter your username below and new password will be sent to your registered e-mail" %}
</div>
{% if form.errors %}
-<p class="errors"><span class="big">请注意以下错误:</span><br>
+<p class="errors"><span class="big">{% "Sorry, looks like we have some errors:" %}</span><br>
{% if form.username.errors %}
<span class="error">{{ form.username.errors|join:", " }}</span>
{% endif %}
@@ -23,11 +24,11 @@
<div class="aligned">
<form action="." method="post" accept-charset="utf-8">
- <div id="form-row"><label for="id_username">用户名: </label>{{ form.username }}</div>
+ <div id="form-row"><label for="id_username">{% trans "User name" %}:</label>{{ form.username }}</div>
- <p style="padding-top:10px"><input type="submit" value="重设密码"> <a href="{% url user_signin %}">返回登录</a></p>
+ <p style="padding-top:10px"><input type="submit" value="{% trans "Reset password" %}"> <a href="{% url user_signin %}">{% trans "return to login" %}</a></p>
</form>
- <span class="darkred">注意: 新的密码只有您在激活邮件中的链接后才会被激活。</span>
+ <span class="darkred">{% trans "Note: your new password will be activated only after you click the activation link in the email message" %}</span>
</div>
{% endblock %}
diff --git a/templates/authopenid/settings.html b/templates/authopenid/settings.html
index c765b989..ffd5dd8f 100644
--- a/templates/authopenid/settings.html
+++ b/templates/authopenid/settings.html
@@ -17,7 +17,7 @@
{% block content %}
<div id="main-bar">
- <h3><strong>{{ request.user.username }}账户设置</strong></h3>
+ <h3><strong>{{ request.user.username }} {% trans "Profile" %}</strong></h3>
</div>
<div id="settings-options">
{% if msg %}
@@ -25,16 +25,16 @@
{% endif %}
<dl class="list-item">
- <dt>» <a href="{% url user_changepw %}">修改密码</a></dt>
+ <dt>» <a href="{% url user_changepw %}">{% trans "Change password" %}</a></dt>
<dd>{% trans "Give your account a new password." %}</dd>
- <dt>» <a href="{% url user_changeemail %}">更换电子邮件</a></dt>
+ <dt>» <a href="{% url user_changeemail %}">{% trans "Change email " %}</a></dt>
<dd>{% trans "Add or update the email address associated with your account." %}</dd>
{% if is_openid %}
- <dt>» <a href="{% url user_changeopenid %}">更换OpenID地址</a></dt>
+ <dt>» <a href="{% url user_changeopenid %}">{% trans "Change OpenID %}</a></dt>
<dd>{% trans "Change openid associated to your account" %}</dd>
{% endif %}
- <dt>» <a href="{% url user_delete %}">删除帐号</a></dt>
+ <dt>» <a href="{% url user_delete %}">{% trans "Delete account" %}</a></dt>
<dd>{% trans "Erase your username and all your data from website" %}</dd>
</dl>
</div>
diff --git a/templates/authopenid/signin.html b/templates/authopenid/signin.html
index 9c5511f2..aff2f06f 100644
--- a/templates/authopenid/signin.html
+++ b/templates/authopenid/signin.html
@@ -1,5 +1,6 @@
{% extends "base.html" %}
-{% block title %}{% spaceless %}用户登录{% endspaceless %}{% endblock %}
+{% load i18n %}
+{% block title %}{% spaceless %}{% trans "User login" %}{% endspaceless %}{% endblock %}
{% block forejs %}
<script type="text/javascript" src="/content/js/jquery.openid.js?"></script>
<script type='text/javascript' src='/content/js/jquery.validate.pack.js'></script>
@@ -12,26 +13,26 @@
{% endblock %}
{% block content %}
<div class="headNormal">
- 用户登录
+ {% trans "User login" %}
</div>
<div class="login">
<form name="openid_form" action="{% url user_signin %}" method="post">
{{ form2.next }}
- <p style="display:none">CNProg支持<b>两种</b>登录模式。您可以使用帐号、密码登录,或者使用OpenID登录。</p>
+ <p style="display:none">{% trans "we support two login modes" %}</p>
{% if msg %}
<p class="warning">{{ msg }}</p>
{% endif %}
<fieldset class="fieldset">
- <legend ><strong>使用OpenID登录</strong></legend>
+ <legend ><strong>{% trans "Login with your OpenID" %}</strong></legend>
<div id="openid_choice">
- <p>请选择您的帐号类型并完成正确的OpenID地址(如:替换“{username}”为您的对应帐号):</p>
+ <p>{% trans "select openid provider" %}</p>
<div id="openid_btns">
</div>
+ <br><br><br>
+ <p>{% trans "verify openid link and login" %}</p>
</div>
- <br>
- <br><br>
<p>
- {{ form2.openid_url }} <input id="bsignin" name="bsignin" type="submit" value="登录" class="openid-login-submit" />
+ {{ form2.openid_url }} <input id="bsignin" name="bsignin" type="submit" value="{% trans "Login" %}" class="openid-login-submit" />
</p>
</fieldset>
</form>
@@ -39,7 +40,7 @@
<br>
{% if form1.errors %}
<p class="errors">
- <span class="big">请注意以下错误:</span><br>
+ <span class="big">{% trans "Sorry, looks like we have some errors:" %}</span><br>
<ul class="error-list">
{% if form1.username.errors %}
<li><span class="error">{{ form1.username.errors|join:", " }}</span></li>
@@ -54,11 +55,12 @@
<form name="fauth" action="{% url user_signin %}" method="post">
{{ form1.next }}
<fieldset class="fieldset" >
- <legend class="big">使用帐号密码登录</legend>
- <div class="form-row"><label for="id_username">用户名:</label><br />{{ form1.username }}</div>
- <div class="form-row"><label for="id_password">密码:</label><br />{{ form1.password }}</div>
- <div class="submit-row"><input type="submit" class="submit" name="blogin" value="登录"> <a href="">忘记密码?</a> <a href="">注册新帐号</a></div>
-
+ <legend class="big">{% trans "Use login name and password" %}</legend>
+ <div class="form-row"><label for="id_username">{% trans "Login name" %}:</label><br />{{ form1.username }}</div>
+ <div class="form-row"><label for="id_password">{% trans "Password" %}:</label><br />{{ form1.password }}</div>
+ <div class="submit-row"><input type="submit" class="submit" name="blogin" value="{% trans "Login" %}">
+ <a href="">{% trans "Forgot your password?" %}</a>
+ <a href="">{% trans "Create new acccount" %}</a></div>
</fieldset>
</form>
</div>
@@ -67,28 +69,25 @@
{% block sidebar %}
<div class="boxC">
- <h3 class="subtitle">为什么需要OpenID登录?</h3>
+ <h3 class="subtitle">{% trans "Why use OpenID?" %}</h3>
<p>
<ul class="list-item">
<li>
- 构建在OpenID网络认证上的本系统,不需要你注册新的帐号,即可使用我们系统的所有功能
+ {% trans "with openid it is easier" %}
</li>
<li>
- 用同一个帐号可登录互联网所有激活OpenID的网站
-
+ {% trans "reuse openid" %}
</li>
<li>
- 全世界有1.6亿OpenID帐号,和10,000个支持OpenID的站点
-
+ {% trans "openid is widely adopted" %}
</li>
<li>
- OpenID是有开放标准,并且有相关的基金组织提供支持
-
+ {% trans "openid is supported open standard" %}
</li>
</ul>
- <a href="http://openid.net/what/" target="_blank" style="float:right;position:relative">查看更多 »</a><br>
- <a href="http://openid.net/get/" target="_blank" style="float:right;position:relative">获取OpenID »</a>
+ <a href="http://openid.net/what/" target="_blank" style="float:right;position:relative">{% trans "Find out more" %} »</a><br>
+ <a href="http://openid.net/get/" target="_blank" style="float:right;position:relative">{% trans "Get OpenID" %} »</a>
</p>
<br>
</div>
diff --git a/templates/authopenid/signup.html b/templates/authopenid/signup.html
index e51544f7..a4460aa3 100644
--- a/templates/authopenid/signup.html
+++ b/templates/authopenid/signup.html
@@ -1,18 +1,18 @@
{% extends "base.html" %}
-{% block title %}{% spaceless %}注册帐号{% endspaceless %}{% endblock %}
+{% block title %}{% spaceless %}{% trans "Signup" %}{% endspaceless %}{% endblock %}
{% block content %}
<div id="main-bar" class="">
- <h3 >注册帐号</h3>
+ <h3 >{% trans "Signup" %}</h3>
</div>
<div class="jointxt">
- <p>我们支持两种注册方式,你可以使用常规的用户名、密码方式注册,或者<a href="{% url user_signin %}">使用OpenID帐号注册</a>。</p>
+ <p>{% trans "We support two types of user registration: conventional username/password, and" %} <a href="{% url user_signin %}">{% trans "the OpenID method" %}</a>.</p>
{% if form.errors %}
<p class="errors">
- <span class="big">请注意以下错误:</span><br>
+ <span class="big">{% trans "Sorry, looks like we have some errors" %}</span><br>
<ul class="error-list">
{% if form.username.errors %}
<li><span class="error">{{ form.username.errors|join:", " }}</span></li>
@@ -30,22 +30,23 @@
</div>
<form action="{% url user_signup %}" method="post" accept-charset="utf-8">
<fieldset class="fieldset">
- <legend class="big">常规注册</legend>
- <div class="form-row"><label for="id_username">选择一个用户名:</label><br>{{ form.username }}</div>
+ <legend class="big">{% trans "Conventional registration" %}</legend>
+ <div class="form-row"><label for="id_username">{% trans "choose a user name" %}:</label><br>{{ form.username }}</div>
- <div class="form-row"><label for="id_email">您的电子邮件地址:</label><br>{{ form.email }}</div>
- <div class="form-row"><label for="id_password1">密码:</label><br />{{ form.password1 }}</div>
- <div class="form-row"><label for="id_password2">确认密码:</label><br>{{ form.password2 }}</div>
- <div class="submit-row"><input type="submit" class="submit" value="注册" > <a href="{% url user_signin %}">返回登录</a></div>
+ <div class="form-row"><label for="id_email">{% trans "your email address" %}:</label><br>{{ form.email }}</div>
+ <div class="form-row"><label for="id_password1">{% trans "choose password" %}:</label><br />{{ form.password1 }}</div>
+ <div class="form-row"><label for="id_password2">{% trans "retype password" %}:</label><br>{{ form.password2 }}</div>
+ <div class="submit-row"><input type="submit" class="submit" value="{% trans "login" %}" >
+ <a href="{% url user_signin %}">{% trans "back to login" %}</a></div>
</fieldset>
<br >
</form>
<br >
<div style="display:none">
- <h2 class="signup">使用OpenID注册</h2>
+ <h2 class="signup">{% trans "Register with your OpenID" %}</h2>
<form name="fopenid" action="{% url user_signin %}" method="post">
<div class="form-row">{{ form2.openid_url }}</div>
- <div class="submit-row "><input name="bsignin" class="submit" type="submit" value="使用OpenID登录"></div>
+ <div class="submit-row "><input name="bsignin" class="submit" type="submit" value="{% trans "Login with your OpenID" %}"></div>
</form>
</div>
{% endblock %}
diff --git a/templates/badge.html b/templates/badge.html
index 4ffedfa6..d0906918 100644
--- a/templates/badge.html
+++ b/templates/badge.html
@@ -1,7 +1,9 @@
+<!-- template badge.html -->
{% extends "base_content.html" %}
+{% load i18n %}
{% load extra_tags %}
{% load humanize %}
-{% block title %}{% spaceless %}{{ badge.name }}-奖牌{% endspaceless %}{% endblock %}
+{% block title %}{% spaceless %}{{ badge.name }} - {% trans "Badge" %}{% endspaceless %}{% endblock %}
{% block forejs %}
<script type="text/javascript">
$().ready(function(){
@@ -12,7 +14,7 @@
{% endblock %}
{% block content %}
<div id="main-bar" class="headNormal">
- 奖牌
+ {% trans "Badge" %}
</div>
<div id="main-body" style="width:100%;margin-bottom:20px">
<p>
@@ -21,7 +23,7 @@
<div>
{% if badge.awarded_count %}
<p style="float:left"><span class="count">{{ awards|length|intcomma }}</span>
- <strong>用户已被授予该奖牌:</strong></p>
+ <strong>{% trans "The users have been awarded with badges:" %}</strong></p>
{% endif %}
</div>
<div id="award-list" style="clear:both;margin-left:20px;line-height:25px;">
@@ -32,7 +34,4 @@
</div>
{% endblock %}
-
-
-
-
+<!-- end template badge.html -->
diff --git a/templates/badges.html b/templates/badges.html
index e8033f13..ef0a5451 100644
--- a/templates/badges.html
+++ b/templates/badges.html
@@ -2,7 +2,7 @@
{% load extra_tags %}
{% load humanize %}
{% load i18n %}
-{% block title %}{% spaceless %}{% trans "Badges" %}{% endspaceless %}{% endblock %}
+{% block title %}{% spaceless %}{% trans "Badges summary" %}{% endspaceless %}{% endblock %}
{% block forejs %}
<script type="text/javascript">
$().ready(function(){
@@ -13,12 +13,11 @@
{% endblock %}
{% block content %}
<div class="headlineA">
- <span class="headMedals">{% trans "Badges"%}</span>
+ <span class="headMedals">{% trans "Badges" %}</span>
</div>
<div id="main-body" style="width:100%">
<p>
- 提出问题,给予回答,投出你的票 - CNProg 会针对你在社区的表现,授予你各类奖牌。<br>
- 这里列出社区所有的奖牌,以及到目前为此,每个奖牌被授予的用户人数。
+ {% trans "Community gives you awards for your questions, answers and votes. Below is the list of available badges and number of times each type of badge has been awarded." %}
</p>
<br>
<div id="medalList">
@@ -45,29 +44,30 @@
{% block sidebar %}
<div class="boxB">
- <h3>社区奖牌</h3>
+ <h3>{% trans "Community badges" %}</h3>
<div class="body">
<p>
- <a style="cursor:default;" title="金牌:十分罕见之最高荣耀" class="medal"><span class="badge1">&#9679;</span>&nbsp;金牌</a>
+ <a style="cursor:default;" title="gold badge: the highest honor and is very rare" class="medal"><span class="badge1">&#9679;</span>&nbsp;{% trans "gold" %}</a>
</p>
<p>
- 金牌是十分罕见的。你不仅要参与社区的提问、回答、投票等活动,而且需要有高深的知识和能力才能获得。获得金牌意味着你在某个层次上已经达到了顶峰。
+ {% trans "Gold badge is very rare. To obtain it you have to show profound knowledge and ability in addition to actively participating in the community. Gold badge is the highest award in this community." %}
</p>
<p>
- <a style="cursor:default;" title="银牌:偶尔颁发之优质奖章" class="medal"><span class="badge2">&#9679;</span>&nbsp;银牌</a>
+ <a style="cursor:default;"
+ title="silver badge: occasionally awarded for the very high quality contributions"
+ class="medal"><span class="badge2">&#9679;</span>&nbsp;{% trans "silver" %}</a>
</p>
<p>
- 银牌需要经过长时间的奋斗才能获得。它是不同寻常的荣誉,只要你付出足够的努力就会得到。
+ {% trans "Obtaining silver badge requires significant patience. If you got one, you've very significantly contributed to this community" %}
</p>
<p>
- <a style="cursor:default;" title="铜牌:时常授予之特殊荣誉" class="medal"><span class="badge3">&#9679;</span>&nbsp;铜牌</a>
+ <a style="cursor:default;" title="{% trans "bronze badge: often given as a special honor" %}" class="medal">
+ <span class="badge3">&#9679;</span>&nbsp;{% trans "bronze" %}</a>
</p>
<p>
- 铜牌会在你活跃于社区时产生,它相对容易获得,但也是一种特殊的荣誉。
+ {% trans "If you are active in this community, you will get this medal - still it is a special honor." %}
</p>
</div>
</div>
{% endblock %}
-
-
-
+<!-- end template badges.html -->
diff --git a/templates/base.html b/templates/base.html
index 90b40612..bf24c840 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -1,6 +1,7 @@
-{% load extra_filters %}
-{% load i18n %}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!-- template base.html -->
+{% load extra_filters %}
+{% load i18n %}
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{% block title %}{% endblock %} - {{ APP_TITLE }}</title>
@@ -8,20 +9,26 @@
{% block meta %}{% endblock %}
{% endspaceless %}
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <meta name="verify-v1" content="55uGNnQVJW8p1bbXeF/Xbh9I7nZBM/wLhRz6N/I1kkA=" />
+ <meta name="verify-v1" content="{{verify_v1_code}}" />
<link rel="shortcut icon" href="/content/images/favicon.ico" >
<link href="/content/style/style.css" rel="stylesheet" type="text/css" />
- <script type='text/javascript' src='/content/js/com.cnprog.utils.js'></script>
<script src="http://www.google.com/jsapi"></script>
<script>google.load("jquery", "1.2.6");</script>
- <script type="text/javascript">
+ <script type="text/javascript">
+ var i18nLang = 'en';
+ </script>
+ <script type='text/javascript' src='/content/js/com.cnprog.i18n.js'></script>
+ <script type='text/javascript' src='/content/js/jquery.i18n.js'></script>
+ <script type='text/javascript' src='/content/js/com.cnprog.utils.js'></script>
+ <!--<script type="text/javascript">
var uservoiceJsHost = ("https:" == document.location.protocol) ? "https://uservoice.com" : "http://cdn.uservoice.com";
document.write(unescape("%3Cscript src='" + uservoiceJsHost + "/javascripts/widgets/tab.js' type='text/javascript'%3E%3C/script%3E"))
</script>
<script type="text/javascript">
UserVoice.Tab.show({
- key: 'cnprog',
- host: 'cnprog.uservoice.com',
+ //EDIT!!!
+ key: 'key',
+ host: 'where.uservoice.com',
forum: 'general',
alignment: 'left', /* 'left', 'right' */
background_color:'#777',
@@ -29,7 +36,8 @@
hover_color: '#06C',
lang: 'en' /* 'en', 'de', 'nl', 'es', 'fr' */
})
- </script>
+ </script>-->
+ <!-- todo move this to settings -->
{% with request.user.get_messages as messages%}
{% if messages %}
<style type="text/css">
@@ -50,9 +58,9 @@
<body>
<div class="notify" style="display:none">
<span>{% if request.user.get_messages %}
- {% trans "Congratulations! You have new badges: " %}{% for message in request.user.get_messages %}
- <font class="darkred">{{ message }}</font>, {% endfor %}{% trans "go to see" %}
- <a href="{{ request.user.get_profile_url }}">{% trans "Profile" %}</a>{% endif %}</span>
+ {% trans "congratulations, community gave you a badge" %}: {% for message in request.user.get_messages %}
+ <font class="darkred">{{ message }}</font>, {% endfor %}查看
+ <a href="{{ request.user.get_profile_url }}">{% trans "profile" %}</a>{% endif %}</span>
<a class="close-notify" onclick="notify.close(true)">&times;</a>
</div>
{% include "header.html" %}
diff --git a/templates/base_content.html b/templates/base_content.html
index 6dec6cae..39627a0e 100644
--- a/templates/base_content.html
+++ b/templates/base_content.html
@@ -10,17 +10,24 @@
{% spaceless %}
{% block forestyle %}{% endblock %}
{% endspaceless %}
- <script type='text/javascript' src='/content/js/com.cnprog.utils.js'></script>
<script src="http://www.google.com/jsapi"></script>
- <script>google.load("jquery", "1.2.6");</script>
- <script type="text/javascript">
+ <script>google.load("jquery", "1.2.6");</script>
+ <script type="text/javascript">
+ var i18nLang = 'en';
+ </script>
+ <script type='text/javascript' src='/content/js/com.cnprog.i18n.js'></script>
+ <script type='text/javascript' src='/content/js/jquery.i18n.js'></script>
+ <script type='text/javascript' src='/content/js/com.cnprog.utils.js'></script>
+
+ <!-- <script type="text/javascript">
var uservoiceJsHost = ("https:" == document.location.protocol) ? "https://uservoice.com" : "http://cdn.uservoice.com";
document.write(unescape("%3Cscript src='" + uservoiceJsHost + "/javascripts/widgets/tab.js' type='text/javascript'%3E%3C/script%3E"))
</script>
<script type="text/javascript">
UserVoice.Tab.show({
- key: 'cnprog',
- host: 'cnprog.uservoice.com',
+ //EDIT!!!
+ key: 'uservoicekey',
+ host: 'where.uservoice.com',
forum: 'general',
alignment: 'left', /* 'left', 'right' */
background_color:'#777',
@@ -28,7 +35,8 @@
hover_color: '#06C',
lang: 'en' /* 'en', 'de', 'nl', 'es', 'fr' */
})
- </script>
+ </script>-->
+ <!-- todo move this to settings-->
{% with request.user.get_messages as messages%}
{% if messages %}
@@ -49,10 +57,10 @@
<body>
<div class="notify" style="display:none">
<span>{% if request.user.get_messages %}
- {% trans "Congratulations! You have new badges: " %}{% for message in request.user.get_messages %}
- <font class="darkred">{{ message }}</font>, {% endfor %}{% trans "go to see" %}
- <a href="{{ request.user.get_profile_url }}">{% trans "Profile" %}</a>{% endif %}</span>
- <a class="close-notify" onclick="notify.close(true)">&times;</a>
+ {% trans "congratulations, community gave you a badge" %}:{% for message in request.user.get_messages %}
+ <font class="darkred">{{ message }}</font>, {% endfor %}{% trans "see" %}
+ <a href="{{ request.user.get_profile_url }}">{% trans "profile" %}</a>{% endif %}</span>
+ <a class="close-notify" onclick="notify.close(true)">&times;</a>
</div>
{% include "header.html" %}
<div id="wrapper">
diff --git a/templates/book.html b/templates/book.html
index e5d4396b..a58a09f2 100644
--- a/templates/book.html
+++ b/templates/book.html
@@ -1,8 +1,10 @@
+<!-- template book.html -->
{% extends "base_content.html" %}
+{% load i18n %}
{% load extra_tags %}
{% load extra_filters %}
{% load humanize %}
-{% block title %}{% spaceless %}{{ book.title }}-读书频道{% endspaceless %}{% endblock %}
+{% block title %}{% spaceless %}{{ book.title }}-{% trans "reading channel" %}{% endspaceless %}{% endblock %}
{% block forejs %}
<script type="text/javascript">
$().ready(function(){
@@ -21,27 +23,27 @@
<div class="bookSummary">
<table>
<tr>
- <td>【作者】</td>
+ <td>{% trans "[author]" %}</td>
<td><b><a href="{% url user book.user.id %}" rel="nofollow" >{{ book.author }}</a></b></td>
</tr>
<tr>
- <td>【出版社】</td>
+ <td>{% trans "[publisher]" %}</td>
<td>{{ book.publication }}</td>
</tr>
<tr>
- <td>【出版日期】</td>
+ <td>{% trans "[publication date]" %}</td>
<td>{{ book.published_at|date:"Y-m" }}</td>
</tr>
<tr>
- <td>【价格】</td>
- <td>{{ book.price }} 元</td>
+ <td>{% trans "[price]" %}</td>
+ <td>{{ book.price }} {% trans "currency unit" %}</td>
</tr>
<tr>
- <td>【页数】</td>
- <td>{{ book.pages }} 页</td>
+ <td>{% trans "[pages]" %}</td>
+ <td>{{ book.pages }} {% trans "pages abbreviation" %}</td>
</tr>
<tr>
- <td>【标签】</td>
+ <td>{% trans "[tags]" %}</td>
<td>{{ book.tagnames }}</td>
</tr>
<tr>
@@ -51,17 +53,17 @@
{% if author_info.blog_url %}
<tr>
<td></td>
- <td><a href="{{ author_info.blog_url }}" rel="nofollow" >作者博客 »</a></td>
+ <td><a href="{{ author_info.blog_url }}" rel="nofollow" >{% trans "author blog" %} »</a></td>
</tr>
{% endif %}
<tr>
<td> </td>
- <td><a href="#" rel="nofollow">书籍目录 »</a></td>
+ <td><a href="#" rel="nofollow">{% trans "book directory" %} »</a></td>
</tr>
<tr>
<td> </td>
- <td><a href="#" rel="nofollow">网上购买 »</a></td>
+ <td><a href="#" rel="nofollow">{% trans "buy online" %} »</a></td>
</tr>
</table>
</div>
@@ -74,21 +76,21 @@
<div class="tabBar">
<div class="tabsB">
- <a id="qa" class="on" title="图书相关的技术答疑" href="#">答读者问</a>
+ <a id="qa" class="on" title="{% trans "book technical Q&A %}" href="#">{% trans "reader questions" %}</a>
</div>
</div>
- <div class="bookAsk"><a href="{% url ask_book book.short_name %}">向作者提问</div>
+ <div class="bookAsk"><a href="{% url ask_book book.short_name %}">{% trans "ask the author" %}</div>
<div class="user-stats-table">
{% for question in questions.object_list %}
{% if question.favourite_count %}
{% if question.favorited_myself %}
<div class="favorites-count">
- <img title="这个问题被 {{question.favourite_count}} 位用户收藏" src="/content/images/vote-favorite-on.png">
+ <img title="{% trans "this question was selected as favorite" %} {{question.favourite_count}} {% trans "number of times" %}" src="/content/images/vote-favorite-on.png">
<div><b>{{question.favourite_count|intcomma}}</b></div>
</div>
{% else %}
<div class="favorites-count-off">
- <img title="这个问题被 {{question.favourite_count}} 位用户收藏" src="/content/images/vote-favorite-off.png">
+ <img title="{% trans "this question was selected as favorite" %} {{question.favourite_count}} {% trans "number of times" %}" src="/content/images/vote-favorite-off.png">
<div><b>{{question.favourite_count|intcomma}}</b></div>
</div>
{% endif %}
@@ -100,17 +102,17 @@
<div class="stats">
<div class="votes">
<div class="vote-count-post">{{question.score|intcomma}}</div>
- 票
+ {% trans "votes" %}
</div>
- <div title="{% if question.answer_accepted %}有答案已被接受为正确答案{% endif %}" class="status {% if question.answer_accepted %}answered-accepted{% endif %} {% ifequal question.answer_count 0 %}unanswered{% endifequal %}{% ifnotequal question.answer_count 0 %}answered{% endifnotequal %}">
+ <div title="{% if question.answer_accepted %}{% trans "the answer has been accepted to be correct" %}{% endif %}" class="status {% if question.answer_accepted %}answered-accepted{% endif %} {% ifequal question.answer_count 0 %}unanswered{% endifequal %}{% ifnotequal question.answer_count 0 %}answered{% endifnotequal %}">
<div class="answer-count-post">{{question.answer_count|intcomma}}</div>
- 回答
-
+ {% trans "answer" %}
+
</div>
<div class="views">
<div class="views-count-post">{{question.view_count|cnprog_intword|safe}}</div>
- 浏览
+ {% trans "views" %}
</div>
</div>
</a>
@@ -120,7 +122,7 @@
</h3>
<div class="tags">
{% for tag in question.tagname_list %}
- <a href="{% url forum.views.tag tag|urlencode %}" title="查看有关'{{ tag }}'的问题" rel="tag">{{ tag }}</a>
+ <a href="{% url forum.views.tag tag|urlencode %}" title="{% "see questions tagged with" %}'{{ tag }}'{% trans "using tags" %}" rel="tag">{{ tag }}</a>
{% endfor %}
</div>
<div class="started">
@@ -136,15 +138,15 @@
</div>
{% endblock %}
{% block tail %}
-
<div class="pager">
{% cnprog_paginator context %}
</div>
<div class="bookFeed">
<div id="feeds">
- <a href="/feeds/rss" title="RSS订阅该图书最新问题">订阅最新问题</a>
+ <a href="/feeds/rss" title="{% trans "subscribe to book RSS feed" %}">{% trans "subscribe to the questions feed" %}</a>
</div>
</div>
-{% endblock %} \ No newline at end of file
+{% endblock %}
+<!-- end template book.html -->
diff --git a/templates/close.html b/templates/close.html
index 04a22f18..32df3e82 100644
--- a/templates/close.html
+++ b/templates/close.html
@@ -1,7 +1,9 @@
+<!-- template close.html -->
{% extends "base_content.html" %}
+{% load i18n %}
{% load extra_tags %}
{% load humanize %}
-{% block title %}{% spaceless %}关闭问题{% endspaceless %}{% endblock %}
+{% block title %}{% spaceless %}{% trans "Close question" %}{% endspaceless %}{% endblock %}
{% block forejs %}
<script type="text/javascript">
$().ready(function(){
@@ -11,26 +13,24 @@
{% endblock %}
{% block content %}
<div id="main-bar" class="headNormal">
- 关闭问题
+ {% trans "Close question" %}
</div>
<div id="main-body" style="width:100%;margin-bottom:10px">
- <p>由于以下原因,你要关闭这个问题: <a href="{{ question.get_absolute_url }}">
+ <p>{% trans "Close the question" %}: <a href="{{ question.get_absolute_url }}">
<strong>{{ question.get_question_title }}</strong></a>
</p>
<form id="fmclose" action="{% url close question.id %}" method="post" >
<p>
- <strong>原因:</strong> {{ form.reason }}
+ <strong>{% trans "Reasons" %}:</strong> {{ form.reason }}
</p>
<div id="" style="padding-top:20px">
- <input type="submit" value="确定关闭" class="submit" />
- <input id="btBack" type="button" class="submit" value="取消" />
+ <input type="submit" value="{% trans "OK to close" %}" class="submit" />
+ <input id="btBack" type="button" class="submit" value="{% trans "Cancel" %}" />
</div>
</form>
</div>
{% endblock %}
-
-
-
+<!-- end template close.html -->
diff --git a/templates/content/images/favicon.ico b/templates/content/images/favicon.ico
deleted file mode 100644
index b5c6f578..00000000
--- a/templates/content/images/favicon.ico
+++ /dev/null
Binary files differ
diff --git a/templates/content/js/com.cnprog.i18n.js b/templates/content/js/com.cnprog.i18n.js
new file mode 100644
index 00000000..2d8c90a6
--- /dev/null
+++ b/templates/content/js/com.cnprog.i18n.js
@@ -0,0 +1,90 @@
+// Evgeny Fadeev evgeny.fadeev@gmail.com localized for english and chinese
+// i18nLang variable must be set in html header to extract correct language
+var i18nZh = {
+ 'insufficient privilege':'用户权限不在操作范围',
+ 'cannot pick own answer as best':'不能设置自己的回答为最佳答案',
+ 'anonymous users cannot select favorite questions':'匿名用户不能收藏问题,请先',
+ 'please login':'注册或者登录',
+ 'anonymous users cannot vote':'匿名用户不能投票',
+ '>15 points requried to upvote':'需要+15积分才能投支持票。',
+ '>100 points required to downvote':'需要+100积分才能投反对票。',
+ 'please see': '查看',
+ 'cannot vote for own posts':'不能给自己的帖子投票',
+ 'daily vote cap exhausted':'对不起,您已用完今日所有的投票。',
+ 'cannot revoke old vote':'这个投票已经过时,不能撤销。',
+ 'please confirm offensive':"确定要归类该帖为广告、人身攻击、恶意言论吗?",
+ 'anonymous users cannot flag offensive posts':'匿名用户不能操作,请先',
+ 'cannot flag message as offensive twice':'不能重复操作。',
+ 'flag offensive cap exhausted':'对不起,您已用完今日所有的5次‘水帖’操作。',
+ 'need >15 points to report spam':"需要+15积分才能归类‘垃圾帖’。",
+ 'confirm delete':"确定要删除/撤销删除该帖吗?",
+ 'anonymous users cannot delete/undelete':"匿名用户不能删除或撤销删除帖子",
+ 'post recovered':"操作成功!该帖子已被恢复。",
+ 'post deleted':"操作成功!该帖子已删除。",
+ 'add comment':'添加评论',
+ 'community reputation points':'社区积分',
+ 'to comment, need':'评论需要',
+ 'delete this comment':'删除此评论',
+ 'hide comments':"隐藏评论",
+ 'add a comment':"添加评论",
+ 'comments':"评论",
+ 'confirm delete comment':"真要删除此评论吗?",
+ 'characters':'字符',
+ 'can write':'还可写',
+ 'click to close':'点击消息框关闭',
+ 'loading...':'读取中...',
+ 'tags cannot be empty':'标签不能为空。',
+ 'tablimits info':"最多5个标签,每个标签长度小于20个字符。",
+ 'content cannot be empty':'内容不能为空。',
+ 'content minchars': '请输入至少 {0} 字符。',
+ 'please enter title':'请输入标题。',
+ 'title minchars':"请输入至少 {0} 字符。",
+ 'delete':'删除',
+ 'undelete': '取消',
+ 'bold':'粗体',
+ 'italic':'斜体',
+ 'link':'超链接',
+ 'quote':'引用',
+ 'preformatted text':'代码',
+ 'image':'图片',
+ 'numbered list':'数字编号列表',
+ 'bulleted list':'项目符号列表',
+ 'heading':'标题',
+ 'horizontal bar':'水平线',
+ 'undo':'撤销',
+ 'redo':'重做',
+ 'enter image url':'<b>输入图片地址</b></p><p>示例:<br />http://www.example.com/image.jpg \"我的截图\"',
+ 'enter url':'<b>输入Web地址</b></p><p>示例:<br />http://www.cnprog.com/ \"我的网站\"</p>"',
+ 'upload image':'或者上传本地图片:',
+};
+
+var i18nEn = {
+ 'to comment, need': 'to comment, need reputation ',
+ 'please see':'please see ',
+ 'community reputation points':' ',
+ 'upload image':'Upload image:',
+ 'enter image url':'enter URL of the image, e.g. http://www.example.com/image.jpg \"image title\"',
+ 'enter url':'enter Web address, e.g. http://www.example.com \"page title\"',
+ 'daily vote cap exhausted':'sorry, you\'ve used up todays vote cap',
+ 'cannot pick own answer as best':'cannot accept own answer',
+ 'cannot revoke old vote':'older votes cannot be revoked',
+ 'please confirm offensive':'are you sure this post is offensive, contains spam, advertising, malicious remarks, etc.?',
+ 'flag offensive cap exhausted':'sorry, you\'ve used up todays cap of flagging offensive messages',
+ 'confirm delete':'are you sure you want to delete this?',
+ 'anonymous users cannot delete/undelete':'anonymous users cannot delete or undelete posts',
+ 'post recovered':'your post is now restored!',
+ 'post deleted':'your post has been deleted',
+ 'confirm delete comment':'do you really want to delete this comment?',
+ 'can write':'have ',
+ 'tablimits info':'up to 5 tags, no more than 20 characters each',
+ 'content minchars': 'please enter more than {0} characters',
+ 'title minchars':"please enter at least {0} characters",
+ 'characters':'characters left',
+};
+
+var i18n = {
+ 'en':i18nEn,
+ 'zh':i18nZh
+};
+
+var i18n_dict = i18n[i18nLang];
diff --git a/templates/content/js/com.cnprog.post.js b/templates/content/js/com.cnprog.post.js
index dbf5d128..e3101ea7 100644
--- a/templates/content/js/com.cnprog.post.js
+++ b/templates/content/js/com.cnprog.post.js
@@ -49,24 +49,37 @@ var Vote = function(){
var removeQuestionLinkIdPrefix = 'question-delete-link-';
var removeAnswerLinkIdPrefix = 'answer-delete-link-';
- var acceptAnonymousMessage = "用户权限不在操作范围";
- var acceptOwnAnswerMessage = "不能设置自己的回答为最佳答案";
- var favoriteAnonymousMessage = "匿名用户不能收藏问题,请先<a href='/account/signin/?next=/questions/{{QuestionID}}'>注册或者登录</a>";
- var voteAnonymousMessage = "匿名用户不能投票,请先<a href='/account/signin/?next=/questions/{{QuestionID}}'>注册或者登录</a>";
- var upVoteRequiredScoreMessage = "需要+15积分才能投支持票。查看<a href='/faq'>faq</a>";
- var downVoteRequiredScoreMessage = "需要+100积分才能投反对票。查看<a href='/faq'>faq</a>";
- var voteOwnDeniedMessage = "不能给自己的帖子投票";
- var voteRequiredMoreVotes = "对不起,您已用完今日所有的投票。查看<a href='/faq'>faq</a>";
- var voteDenyCancelMessage = "这个投票已经过时,不能撤销。查看<a href='/faq'>faq</a>";
- var offensiveConfirmation = "确定要归类该帖为广告、人身攻击、恶意言论吗?";
- var offensiveAnonymousMessage = "匿名用户不能操作,请先<a href='/account/signin/?next=/questions/{{QuestionID}}'>注册或者登录</a>";
- var offensiveTwiceMessage = "不能重复操作。查看<a href='/faq'>faq</a>";
- var offensiveNoFlagsLeftMessage = "对不起,您已用完今日所有的5次‘水帖’操作。查看<a href='/faq'>faq</a>";
- var offensiveNoPermissionMessage = "需要+15积分才能归类‘垃圾帖’。查看<a href='/faq'>faq</a>";
- var removeConfirmation = "确定要删除/撤销删除该帖吗?";
- var removeAnonymousMessage = "匿名用户不能删除或撤销删除帖子";
- var recoveredMessage = "操作成功!该帖子已被恢复。";
- var deletedMessage = "操作成功!该帖子已删除。"
+ var acceptAnonymousMessage = $.i18n._('insufficient privilege');
+ var acceptOwnAnswerMessage = $.i18n._('cannot pick own answer as best');
+ var favoriteAnonymousMessage = $.i18n._('anonymous user cannot select favorite questions')
+ + "<a href='/account/signin/?next=/questions/{{QuestionID}}'>"
+ + $.i18n._('please login') + "</a>";
+ var voteAnonymousMessage = $.i18n._('anonymous users cannot vote')
+ + "<a href='/account/signin/?next=/questions/{{QuestionID}}'>"
+ + $.i18n._('please login') + "</a>";
+ var upVoteRequiredScoreMessage = $.i18n._('>15 points requried to upvote')
+ + $.i18n._('please see') + "<a href='/faq'>faq</a>";
+ var downVoteRequiredScoreMessage = $.i18n._('>100 points requried to downvote')
+ + $.i18n._('please see') + "<a href='/faq'>faq</a>";
+ var voteOwnDeniedMessage = $.i18n._('cannot vote for own posts');
+ var voteRequiredMoreVotes = $.i18n._('daily vote cap exhausted')
+ + $.i18n._('please see') + "<a href='/faq'>faq</a>";
+ var voteDenyCancelMessage = $.i18n._('cannot revoke old vote')
+ + $.i18n._('please see') + "<a href='/faq'>faq</a>";
+ var offensiveConfirmation = $.i18n._('please confirm offensive');
+ var offensiveAnonymousMessage = $.i18n._('anonymous users cannot flag offensive posts')
+ + "<a href='/account/signin/?next=/questions/{{QuestionID}}'>"
+ + $.i18n._('please login') + "</a>";
+ var offensiveTwiceMessage = $.i18n._('cannot flag message as offensive twice')
+ + $.i18n._('please see') + "<a href='/faq'>faq</a>";
+ var offensiveNoFlagsLeftMessage = $.i18n._('flag offensive cap exhausted')
+ + $.i18n._('please see') + "<a href='/faq'>faq</a>";
+ var offensiveNoPermissionMessage = $.i18n._('need >15 points to report spam')
+ + $.i18n._('please see') + "<a href='/faq'>faq</a>";
+ var removeConfirmation = $.i18n._('confirm delete');
+ var removeAnonymousMessage = $.i18n._('anonymous users cannot delete/undelete');
+ var recoveredMessage = $.i18n._('post recovered');
+ var deletedMessage = $.i18n._('post deleted');
var VoteType = {
acceptAnswer : 0,
@@ -201,7 +214,7 @@ var Vote = function(){
});
getremoveQuestionLink().unbind('click').click(function(event){
- Vote.remove(this, VoteType.removeQuestion)
+ Vote.remove(this, VoteType.removeQuestion);
});
getremoveAnswersLinks().unbind('click').click(function(event){
@@ -330,15 +343,22 @@ var Vote = function(){
};
var callback_remove = function(object, voteType, data){
+ alert(data.status);
if(data.allowed == "0" && data.success == "0"){
showMessage(object, removeAnonymousMessage.replace("{{QuestionID}}", questionId));
}
- else if(data.status == "1"){
- showMessage(object, recoveredMessage);
- }
- else if(data.success == "1"){
- showMessage(object, deletedMessage);
- }
+ else if (data.success == "1"){
+ if (removeActionType == 'delete'){
+ postNode.addClass('deleted');
+ postRemoveLink.innerHTML = $.i18n._('undelete');
+ showMessage(object, deletedMessage);
+ }
+ else if (removeActionType == 'undelete') {
+ postNode.removeClass('deleted');
+ postRemoveLink.innerHTML = $.i18n._('delete');
+ showMessage(object, recoveredMessage);
+ }
+ }
};
return {
@@ -395,8 +415,23 @@ var Vote = function(){
return false;
}
if(confirm(removeConfirmation)){
- postId = object.id.substr(object.id.lastIndexOf('-') + 1);
+ bits = object.id.split('-');
+ postId = bits.pop();/* this seems to be used within submit! */
+ postType = bits.shift();
+
+ if (postType == 'answer'){
+ postNode = $('#answer-container-' + postId);
+ postRemoveLink = object;
+ if (postNode.hasClass('deleted')){
+ removeActionType = 'undelete';
+ }
+ else {
+ removeActionType = 'delete';
+ }
+ }
submit($(object), voteType, callback_remove);
+
+
}
}
}
@@ -426,7 +461,8 @@ function createComments(type) {
var form = '<form id="' + formId + '" class="post-comments"><div>';
form += '<textarea name="comment" cols="60" rows="5" maxlength="300" onblur="'+ objectType +'Comments.updateTextCounter(this)" ';
form += 'onfocus="' + objectType + 'Comments.updateTextCounter(this)" onkeyup="'+ objectType +'Comments.updateTextCounter(this)"></textarea>';
- form += '<input type="submit" value="添加评论" /><br><span class="text-counter"></span>';
+ form += '<input type="submit" value="'
+ + $.i18n._('add comment') + '" /><br><span class="text-counter"></span>';
form += '<span class="form-error"></span></div></form>';
jDiv.append(form);
@@ -439,7 +475,10 @@ function createComments(type) {
else {
var divId = "comments-rep-needed-" + objectType + '-' + id;
if (jDiv.find("#" + divId).length == 0) {
- jDiv.append('<div id="' + divId + '" style="color:red">评论需要 ' + repNeededForComments + ' 社区积分 - <a href="/faq" class="comment-user">查看faq</a></span>');
+ jDiv.append('<div id="' + divId + '" style="color:red">'
+ + $.i18n._('to comment, need') + ' ' +
+ + repNeededForComments + ' ' + $.i18n._('community reputation points')
+ + '<a href="/faq" class="comment-user">' + $.i18n._('please see') + 'faq</a></span>');
}
}
};
@@ -477,7 +516,7 @@ function createComments(type) {
var imgHover = "/content/images/close-small-hover.png";
html += '<img onclick="' + objectType + 'Comments.deleteComment($(this), ' + json.object_id + ', \'' + json.delete_url + '\')" src="' + img;
html += '" onmouseover="$(this).attr(\'src\', \'' + imgHover + '\')" onmouseout="$(this).attr(\'src\', \'' + img
- html += '\')" title="删除此评论" />';
+ html += '\')" title="' + $.i18n._('delete this comment') + '" />';
}
html += '</div>';
@@ -524,13 +563,15 @@ function createComments(type) {
renderForm(id, jDiv);
jDiv.show();
if (canPostComments(id, jDiv)) jDiv.find("textarea").get(0).focus();
- jDiv.siblings("a").unbind("click").click(function() { commentsFactory[objectType].hide(id); }).text("隐藏评论");
+ jDiv.siblings("a").unbind("click").click(function(){
+ commentsFactory[objectType].hide(id);
+ }).text($.i18n._('hide comments'));
},
hide: function(id) {
var jDiv = jDivInit(id);
var len = jDiv.children("div.comments").children().length;
- var anchorText = len == 0 ? "添加评论" : "评论 (<b>" + len + "</b>)";
+ var anchorText = len == 0 ? $.i18n._('add a comment') : $.i18n._('comments') + ' (<b>' + len + "</b>)";
jDiv.hide();
jDiv.siblings("a").unbind("click").click(function() { commentsFactory[objectType].show(id); }).html(anchorText);
@@ -538,7 +579,7 @@ function createComments(type) {
},
deleteComment: function(jImg, id, deleteUrl) {
- if (confirm("真要删除此评论吗?")) {
+ if (confirm($.i18n._('confirm delete comment'))) {
jImg.hide();
appendLoaderImg(id);
$.post(deleteUrl, { dataNeeded: "forIIS7" }, function(json) {
@@ -551,7 +592,9 @@ function createComments(type) {
var length = textarea.value ? textarea.value.length : 0;
var color = length > 270 ? "#f00" : length > 200 ? "#f60" : "#999";
var jSpan = $(textarea).siblings("span.text-counter");
- jSpan.html('还可写' + (300 - length) + ' 字符').css("color", color);
+ jSpan.html($.i18n._('can write')
+ + (300 - length) + ' '
+ + $.i18n._('characters')).css("color", color);
}
};
}
diff --git a/templates/content/js/com.cnprog.post.pack.js b/templates/content/js/com.cnprog.post.pack.js
deleted file mode 100644
index 8af19d13..00000000
--- a/templates/content/js/com.cnprog.post.pack.js
+++ /dev/null
@@ -1 +0,0 @@
-var lanai={highlightSyntax:function(){var a=false;$("pre code").parent().each(function(){if(!$(this).hasClass("prettyprint")){$(this).addClass("prettyprint");a=true}});if(a){prettyPrint()}}};var Vote=function(){var M;var v;var ah;var O;var X="answer-container-";var V="vote-buttons";var s="answer-img-accept-";var T="question-img-favorite";var N="question-img-upvote-";var r="question-img-downvote-";var L="answer-img-upvote-";var ae="answer-img-downvote-";var ad="favorite-number";var j="comment-";var H="vote-number";var a="question-offensive-flag-";var t="answer-offensive-flag-";var x="offensive-flag";var aa="question-controls";var J="question-delete-link-";var b="answer-delete-link-";var o="用户权限不在操作范围";var w="不能设置自己的回答为最佳答案";var g="匿名用户不能收藏问题,请先<a href='/account/signin/?next=/questions/{{QuestionID}}'>注册或者登录</a>";var aj="匿名用户不能投票,请先<a href='/account/signin/?next=/questions/{{QuestionID}}'>注册或者登录</a>";var K="需要+15积分才能投支持票。查看<a href='/faq'>faq</a>";var Y="需要+100积分才能投反对票。查看<a href='/faq'>faq</a>";var q="不能给自己的帖子投票";var n="对不起,您已用完今日所有的投票。查看<a href='/faq'>faq</a>";var A="这个投票已经过时,不能撤销。查看<a href='/faq'>faq</a>";var u="确定要归类该帖为广告、人身攻击、恶意言论吗?";var ab="匿名用户不能操作,请先<a href='/account/signin/?next=/questions/{{QuestionID}}'>注册或者登录</a>";var C="不能重复操作。查看<a href='/faq'>faq</a>";var B="对不起,您已用完今日所有的5次‘水帖’操作。查看<a href='/faq'>faq</a>";var af="需要+15积分才能归类‘垃圾帖’。查看<a href='/faq'>faq</a>";var p="确定要删除/撤销删除该帖吗?";var W="匿名用户不能删除或撤销删除帖子";var Q="操作成功!该帖子已被恢复。";var i="操作成功!该帖子已删除。";var h={acceptAnswer:0,questionUpVote:1,questionDownVote:2,favorite:4,answerUpVote:5,answerDownVote:6,offensiveQuestion:7,offensiveAnswer:8,removeQuestion:9,removeAnswer:10};var Z=function(){var ak="div."+V+" img[class="+T+"]";return $(ak)};var I=function(){var ak="#"+ad;return $(ak)};var e=function(){var ak="div."+V+" img[id^="+N+"]";return $(ak)};var E=function(){var ak="div."+V+" img[id^="+r+"]";return $(ak)};var l=function(){var ak="div."+V+" img[id^="+L+"]";return $(ak)};var k=function(){var ak="div."+V+" img[id^="+ae+"]";return $(ak)};var m=function(al){var ak="div."+V+" img[id="+L+al+"]";return $(ak)};var y=function(al){var ak="div."+V+" img[id="+ae+al+"]";return $(ak)};var z=function(){var ak="table[id=question-table] span[class="+x+"]";return $(ak)};var c=function(){var ak="div.answer span[class="+x+"]";return $(ak)};var R=function(){var ak="div#question-controls a[id^="+J+"]";return $(ak)};var f=function(){var ak="div.answer-controls a[id^="+b+"]";return $(ak)};var U=function(an,al,am){var ak=al?"":"-on";var ao=(an==h.questionUpVote||an==h.answerUpVote)?"up":"down";am.attr("src","/content/images/vote-arrow-"+ao+ak+".png");if(al){if(an==h.questionUpVote||an==h.questionDownVote){$(e()).attr("src","/content/images/vote-arrow-up.png");$(E()).attr("src","/content/images/vote-arrow-down.png")}else{$(m(v)).attr("src","/content/images/vote-arrow-up.png");$(y(v)).attr("src","/content/images/vote-arrow-down.png")}}};var P=function(al,am){var ak=al.parent("div."+V).find("div."+H);$(ak).text(am)};var ac=function(){if(ah==O){var am="div."+V+" img[id^="+s+"]";$(am).unbind("click").click(function(aq){Vote.accept($(aq.target))})}var ao=Z();ao.unbind("click").click(function(aq){Vote.favorite($(aq.target))});var an=e();an.unbind("click").click(function(aq){Vote.vote($(aq.target),h.questionUpVote)});var ak=E();ak.unbind("click").click(function(aq){Vote.vote($(aq.target),h.questionDownVote)});var al=l();al.unbind("click").click(function(aq){Vote.vote($(aq.target),h.answerUpVote)});var ap=k();ap.unbind("click").click(function(aq){Vote.vote($(aq.target),h.answerDownVote)});z().unbind("click").click(function(aq){Vote.offensive(this,h.offensiveQuestion)});c().unbind("click").click(function(aq){Vote.offensive(this,h.offensiveAnswer)});R().unbind("click").click(function(aq){Vote.remove(this,h.removeQuestion)});f().unbind("click").click(function(aq){Vote.remove(this,h.removeAnswer)})};var G=function(ak,al,am){$.ajax({type:"POST",cache:false,dataType:"json",url:"/questions/"+M+"/vote/",data:{type:al,postId:v},error:ai,success:function(an){am(ak,al,an)}})};var ai=function(al,ak){alert("Callback invoke error: "+ak)};var d=function(al,am,ao){if(ao.allowed=="0"&&ao.success=="0"){showMessage(al,o)}else{if(ao.allowed=="-1"){showMessage(al,w)}else{if(ao.status=="1"){al.attr("src","/content/images/vote-accepted.png");$("#"+X+v).removeClass("accepted-answer");$("#"+j+v).removeClass("comment-link-accepted")}else{if(ao.success=="1"){var an="div."+V+" img[id^="+s+"]";$(an).attr("src","/content/images/vote-accepted.png");var ap=("div[id^="+X+"]");$(ap).removeClass("accepted-answer");var ak=("div[id^="+X+"] div[id^="+j+"]");$(ak).removeClass("comment-link-accepted");al.attr("src","/content/images/vote-accepted-on.png");$("#"+X+v).addClass("accepted-answer");$("#"+j+v).addClass("comment-link-accepted")}else{showMessage(al,ao.message)}}}}};var F=function(ak,al,am){if(am.allowed=="0"&&am.success=="0"){showMessage(ak,g.replace("{{QuestionID}}",M))}else{if(am.status=="1"){ak.attr("src","/content/images/vote-favorite-off.png");var an=I();an.removeClass("my-favorite-number");if(am.count==0){am.count=""}an.text(am.count)}else{if(am.success=="1"){ak.attr("src","/content/images/vote-favorite-on.png");var an=I();an.text(am.count);an.addClass("my-favorite-number")}else{showMessage(ak,am.message)}}}};var S=function(ak,al,am){if(am.allowed=="0"&&am.success=="0"){showMessage(ak,aj.replace("{{QuestionID}}",M))}else{if(am.allowed=="-3"){showMessage(ak,n)}else{if(am.allowed=="-2"){if(al==h.questionUpVote||al==h.answerUpVote){showMessage(ak,K)}else{if(al==h.questionDownVote||al==h.answerDownVote){showMessage(ak,Y)}}}else{if(am.allowed=="-1"){showMessage(ak,q)}else{if(am.status=="2"){showMessage(ak,A)}else{if(am.status=="1"){U(al,true,ak);P(ak,am.count)}else{if(am.success=="1"){U(al,false,ak);P(ak,am.count);if(am.message.length>0){showMessage(ak,am.message)}}}}}}}}};var ag=function(ak,al,am){ak=$(ak);if(am.allowed=="0"&&am.success=="0"){showMessage(ak,ab.replace("{{QuestionID}}",M))}else{if(am.allowed=="-3"){showMessage(ak,B)}else{if(am.allowed=="-2"){showMessage(ak,af)}else{if(am.status=="1"){showMessage(ak,C)}else{if(am.success=="1"){$(ak).children("span[class=darkred]").text("("+am.count+")")}}}}}};var D=function(ak,al,am){if(am.allowed=="0"&&am.success=="0"){showMessage(ak,W.replace("{{QuestionID}}",M))}else{if(am.status=="1"){showMessage(ak,Q)}else{if(am.success=="1"){showMessage(ak,i)}}}};return{init:function(ak,al,am){M=ak;ah=al;O=am;ac()},accept:function(ak){v=ak.attr("id").substring(s.length);G(ak,h.acceptAnswer,d)},favorite:function(ak){if(!O||O.toUpperCase()=="NONE"){showMessage(ak,g.replace("{{QuestionID}}",M));return false}G(ak,h.favorite,F)},vote:function(ak,al){if(!O||O.toUpperCase()=="NONE"){showMessage(ak,aj.replace("{{QuestionID}}",M));return false}if(al==h.answerUpVote){v=ak.attr("id").substring(L.length)}else{if(al==h.answerDownVote){v=ak.attr("id").substring(ae.length)}}G(ak,al,S)},offensive:function(ak,al){if(!O||O.toUpperCase()=="NONE"){showMessage($(ak),ab.replace("{{QuestionID}}",M));return false}if(confirm(u)){v=ak.id.substr(ak.id.lastIndexOf("-")+1);G(ak,al,ag)}},remove:function(ak,al){if(!O||O.toUpperCase()=="NONE"){showMessage($(ak),W.replace("{{QuestionID}}",M));return false}if(confirm(p)){v=ak.id.substr(ak.id.lastIndexOf("-")+1);G($(ak),al,D)}}}}();function createComments(i){var d=i;var b=function(k){return $("#comments-"+d+"-"+k)};var j=function(k){appendLoader("#comments-"+d+"-"+k+" div.comments")};var h=function(m,l){var k=l.siblings("#can-post-comments-"+d+"-"+m);return k.val().toLowerCase()=="true"};var f=function(o,m){var n="form-comments-"+d+"-"+o;if(h(o,m)){if(m.find("#"+n).length==0){var l='<form id="'+n+'" class="post-comments"><div>';l+='<textarea name="comment" cols="60" rows="5" maxlength="300" onblur="'+d+'Comments.updateTextCounter(this)" ';l+='onfocus="'+d+'Comments.updateTextCounter(this)" onkeyup="'+d+'Comments.updateTextCounter(this)"></textarea>';l+='<input type="submit" value="添加评论" /><br><span class="text-counter"></span>';l+='<span class="form-error"></span></div></form>';m.append(l);setupFormValidation("#"+n,{comment:{required:true,minlength:10}},"",function(){e(o,n)})}}else{var k="comments-rep-needed-"+d+"-"+o;if(m.find("#"+k).length==0){m.append('<div id="'+k+'" style="color:red">评论需要 '+repNeededForComments+' 社区积分 - <a href="/faq" class="comment-user">查看faq</a></span>')}}};var a=function(l,k){j(l);$.getJSON("/"+d+"s/"+l+"/comments/",function(m){c(l,m)})};var c=function(n,l){var m=b(n);m=m.find("div.comments");m.find("div[id^='comment-"+d+"-']").remove();removeLoader();if(l&&l.length>0){for(var k=0;k<l.length;k++){g(m,l[k])}m.children().show()}};var g=function(o,n){var m='<div id="comment-'+d+"-"+n.id+'" style="display:none">'+n.text;m+=n.user_url?'&nbsp;&ndash;&nbsp;<a href="'+n.user_url+'"':"<span";m+=' class="comment-user">'+n.user_display_name+(n.user_url?"</a>":"</span>");m+=' <span class="comment-date">('+n.add_date+")</span>";if(n.delete_url){var l="/content/images/close-small.png";var k="/content/images/close-small-hover.png";m+='<img onclick="'+d+"Comments.deleteComment($(this), "+n.object_id+", '"+n.delete_url+'\')" src="'+l;m+="\" onmouseover=\"$(this).attr('src', '"+k+"')\" onmouseout=\"$(this).attr('src', '"+l;m+='\')" title="删除此评论" />'}m+="</div>";o.append(m)};var e=function(n,m){j(n);var l="#"+m;var k=$(l+" textarea");$.ajax({type:"POST",url:"/"+d+"s/"+n+"/comments/",dataType:"json",data:{comment:k.val()},success:function(o){c(n,o);k.val("");commentsFactory[d].updateTextCounter(k);enableSubmitButton(l)},error:function(o,q,p){removeLoader();showMessage(l,o.responseText);enableSubmitButton(l)}})};return{init:function(){$("a[id^='comments-link-"+d+"-']").unbind("click").click(function(){commentsFactory[d].show($(this).attr("id").substr(("comments-link-"+d+"-").length))})},show:function(l){var k=b(l);a(l,k);f(l,k);k.show();if(h(l,k)){k.find("textarea").get(0).focus()}k.siblings("a").unbind("click").click(function(){commentsFactory[d].hide(l)}).text("隐藏评论")},hide:function(n){var m=b(n);var k=m.children("div.comments").children().length;var l=k==0?"添加评论":"评论 (<b>"+k+"</b>)";m.hide();m.siblings("a").unbind("click").click(function(){commentsFactory[d].show(n)}).html(l);m.children("div.comments").children().hide()},deleteComment:function(m,l,k){if(confirm("真要删除此评论吗?")){m.hide();j(l);$.post(k,{dataNeeded:"forIIS7"},function(n){c(l,n)},"json")}},updateTextCounter:function(l){var n=l.value?l.value.length:0;var m=n>270?"#f00":n>200?"#f60":"#999";var k=$(l).siblings("span.text-counter");k.html("还可写"+(300-n)+" 字符").css("color",m)}}}var questionComments=createComments("question");var answerComments=createComments("answer");$().ready(function(){questionComments.init();answerComments.init()});var commentsFactory={question:questionComments,answer:answerComments};var PR_SHOULD_USE_CONTINUATION=true;var PR_TAB_WIDTH=8;var PR_normalizedHtml;var PR;var prettyPrintOne;var prettyPrint;function _pr_isIE6(){var a=navigator&&navigator.userAgent&&/\bMSIE 6\./.test(navigator.userAgent);_pr_isIE6=function(){return a};return a}(function(){function W(av){av=av.split(/ /g);var aw={};for(var au=av.length;--au>=0;){var at=av[au];if(at){aw[at]=null}}return aw}var n="break continue do else for if return while ";var D=n+"auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile ";var w=D+"catch class delete false import new operator private protected public this throw true try ";var p=w+"alignof align_union asm axiom bool concept concept_map const_cast constexpr decltype dynamic_cast explicit export friend inline late_check mutable namespace nullptr reinterpret_cast static_assert static_cast template typeid typename typeof using virtual wchar_t where ";var G=w+"boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient ";var ap=G+"as base by checked decimal delegate descending event fixed foreach from group implicit in interface internal into is lock object out override orderby params readonly ref sbyte sealed stackalloc string select uint ulong unchecked unsafe ushort var ";var F=w+"debugger eval export function get null set undefined var with Infinity NaN ";var y="caller delete die do dump elsif eval exit foreach for goto if import last local my next no our print package redo require sub undef unless until use wantarray while BEGIN END ";var ab=n+"and as assert class def del elif except exec finally from global import in is lambda nonlocal not or pass print raise try with yield False True None ";var k=n+"alias and begin case class def defined elsif end ensure false in module next nil not or redo rescue retry self super then true undef unless until when yield BEGIN END ";var aa=n+"case done elif esac eval fi function in local set then until ";var M=(p+ap+F+y+ab+k+aa);var O="str";var L="kwd";var o="com";var al="typ";var Y="lit";var ah="pun";var V="pln";var q="tag";var U="dec";var ad="src";var ao="atn";var s="atv";var ak="nocode";function aq(at){return(at>="a"&&at<="z")||(at>="A"&&at<="Z")}function N(aw,au,at,av){aw.unshift(at,av||0);try{au.splice.apply(au,aw)}finally{aw.splice(0,2)}}var ai=function(){var av=["!","!=","!==","#","%","%=","&","&&","&&=","&=","(","*","*=","+=",",","-=","->","/","/=",":","::",";","<","<<","<<=","<=","=","==","===",">",">=",">>",">>=",">>>",">>>=","?","@","[","^","^=","^^","^^=","{","|","|=","||","||=","~","break","case","continue","delete","do","else","finally","instanceof","return","throw","try","typeof"];var aw="(?:(?:(?:^|[^0-9.])\\.{1,3})|(?:(?:^|[^\\+])\\+)|(?:(?:^|[^\\-])-)";for(var at=0;at<av.length;++at){var au=av[at];if(aq(au.charAt(0))){aw+="|\\b"+au}else{aw+="|"+au.replace(/([^=<>:&])/g,"\\$1")}}aw+="|^)\\s*$";return new RegExp(aw)}();var S=/&/g;var Z=/</g;var x=/>/g;var K=/\"/g;function E(at){return at.replace(S,"&amp;").replace(Z,"&lt;").replace(x,"&gt;").replace(K,"&quot;")}function r(at){return at.replace(S,"&amp;").replace(Z,"&lt;").replace(x,"&gt;")}var e=/&lt;/g;var C=/&gt;/g;var d=/&apos;/g;var i=/&quot;/g;var ar=/&amp;/g;var J=/&nbsp;/g;function t(aw){var ay=aw.indexOf("&");if(ay<0){return aw}for(--ay;(ay=aw.indexOf("&#",ay+1))>=0;){var at=aw.indexOf(";",ay);if(at>=0){var av=aw.substring(ay+3,at);var ax=10;if(av&&av.charAt(0)==="x"){av=av.substring(1);ax=16}var au=parseInt(av,ax);if(!isNaN(au)){aw=(aw.substring(0,ay)+String.fromCharCode(au)+aw.substring(at+1))}}}return aw.replace(e,"<").replace(C,">").replace(d,"'").replace(i,'"').replace(ar,"&").replace(J," ")}function R(at){return"XMP"===at.tagName}function an(ax,av){switch(ax.nodeType){case 1:var au=ax.tagName.toLowerCase();av.push("<",au);for(var aw=0;aw<ax.attributes.length;++aw){var at=ax.attributes[aw];if(!at.specified){continue}av.push(" ");an(at,av)}av.push(">");for(var ay=ax.firstChild;ay;ay=ay.nextSibling){an(ay,av)}if(ax.firstChild||!/^(?:br|link|img)$/.test(au)){av.push("</",au,">")}break;case 2:av.push(ax.name.toLowerCase(),'="',E(ax.value),'"');break;case 3:case 4:av.push(r(ax.nodeValue));break}}var am=null;function b(aw){if(null===am){var au=document.createElement("PRE");au.appendChild(document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));am=!/</.test(au.innerHTML)}if(am){var av=aw.innerHTML;if(R(aw)){av=r(av)}return av}var at=[];for(var ax=aw.firstChild;ax;ax=ax.nextSibling){an(ax,at)}return at.join("")}function ag(av){var at=" ";var au=0;return function(az){var ax=null;var aC=0;for(var ay=0,aB=az.length;ay<aB;++ay){var aA=az.charAt(ay);switch(aA){case"\t":if(!ax){ax=[]}ax.push(az.substring(aC,ay));var aw=av-(au%av);au+=aw;for(;aw>=0;aw-=at.length){ax.push(at.substring(0,aw))}aC=ay+1;break;case"\n":au=0;break;default:++au}}if(!ax){return az}ax.push(az.substring(aC));return ax.join("")}}var Q=/(?:[^<]+|<!--[\s\S]*?-->|<!\[CDATA\[([\s\S]*?)\]\]>|<\/?[a-zA-Z][^>]*>|<)/g;var v=/^<!--/;var T=/^<\[CDATA\[/;var u=/^<br\b/i;var h=/^<(\/?)([a-zA-Z]+)/;function B(aF){var aB=aF.match(Q);var aE=[];var aw=0;var at=[];if(aB){for(var aA=0,av=aB.length;aA<av;++aA){var aC=aB[aA];if(aC.length>1&&aC.charAt(0)==="<"){if(v.test(aC)){continue}if(T.test(aC)){aE.push(aC.substring(9,aC.length-3));aw+=aC.length-12}else{if(u.test(aC)){aE.push("\n");++aw}else{if(aC.indexOf(ak)>=0&&ac(aC)){var au=aC.match(h)[2];var az=1;end_tag_loop:for(var ay=aA+1;ay<av;++ay){var aD=aB[ay].match(h);if(aD&&aD[2]===au){if(aD[1]==="/"){if(--az===0){break end_tag_loop}}else{++az}}}if(ay<av){at.push(aw,aB.slice(aA,ay+1).join(""));aA=ay}else{at.push(aw,aC)}}else{at.push(aw,aC)}}}}else{var ax=t(aC);aE.push(ax);aw+=ax.length}}}return{source:aE.join(""),tags:at}}function ac(at){return !!at.replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g,' $1="$2$3$4"').match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/)}function j(av,au){var at={};(function(){var ay=av.concat(au);for(var az=ay.length;--az>=0;){var aC=ay[az];var aA=aC[3];if(aA){for(var aB=aA.length;--aB>=0;){at[aA.charAt(aB)]=aC}}}})();var ax=au.length;var aw=/\S/;return function(aA,aH){aH=aH||0;var aB=[aH,V];var aC="";var aJ=0;var aI=aA;while(aI.length){var ay;var aD=null;var aG;var az=at[aI.charAt(0)];if(az){aG=aI.match(az[1]);aD=aG[0];ay=az[0]}else{for(var aE=0;aE<ax;++aE){az=au[aE];var aF=az[2];if(aF&&!aF.test(aC)){continue}aG=aI.match(az[1]);if(aG){aD=aG[0];ay=az[0];break}}if(!aD){ay=V;aD=aI.substring(0,1)}}aB.push(aH+aJ,ay);aJ+=aD.length;aI=aI.substring(aD.length);if(ay!==o&&aw.test(aD)){aC=aD}}return aB}}var a=j([],[[V,/^[^<]+/,null],[U,/^<!\w[^>]*(?:>|$)/,null],[o,/^<!--[\s\S]*?(?:-->|$)/,null],[ad,/^<\?[\s\S]*?(?:\?>|$)/,null],[ad,/^<%[\s\S]*?(?:%>|$)/,null],[ad,/^<(script|style|xmp)\b[^>]*>[\s\S]*?<\/\1\b[^>]*>/i,null],[q,/^<\/?\w[^<>]*>/,null]]);var z=/^(<[^>]*>)([\s\S]*)(<\/[^>]*>)$/;function ae(ay){var av=a(ay);for(var ax=0;ax<av.length;ax+=2){if(av[ax+1]===ad){var az,au;az=av[ax];au=ax+2<av.length?av[ax+2]:ay.length;var at=ay.substring(az,au);var aw=at.match(z);if(aw){av.splice(ax,2,az,q,az+aw[1].length,ad,az+aw[1].length+(aw[2]||"").length,q)}}}return av}var X=j([[s,/^\'[^\']*(?:\'|$)/,null,"'"],[s,/^\"[^\"]*(?:\"|$)/,null,'"'],[ah,/^[<>\/=]+/,null,"<>/="]],[[q,/^[\w:\-]+/,/^</],[s,/^[\w\-]+/,/^=/],[ao,/^[\w:\-]+/,null],[V,/^\s+/,null," \t\r\n"]]);function I(ay,au){for(var aw=0;aw<au.length;aw+=2){var ax=au[aw+1];if(ax===q){var aA,at;aA=au[aw];at=aw+2<au.length?au[aw+2]:ay.length;var av=ay.substring(aA,at);var az=X(av,aA);N(az,au,aw,2);aw+=az.length-2}}return au}function m(aw){var ay=[],av=[];if(aw.tripleQuotedStrings){ay.push([O,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(aw.multiLineStrings){ay.push([O,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{ay.push([O,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}av.push([V,/^(?:[^\'\"\`\/\#]+)/,null," \r\n"]);if(aw.hashComments){ay.push([o,/^#[^\r\n]*/,null,"#"])}if(aw.cStyleComments){av.push([o,/^\/\/[^\r\n]*/,null]);av.push([o,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(aw.regexLiterals){var aA=("^/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+(?:/|$)");av.push([O,new RegExp(aA),ai])}var ax=W(aw.keywords);aw=null;var au=j(ay,av);var az=j([],[[V,/^\s+/,null," \r\n"],[V,/^[a-z_$@][a-z_$@0-9]*/i,null],[Y,/^0x[a-f0-9]+[a-z]/i,null],[Y,/^(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d+)(?:e[+\-]?\d+)?[a-z]*/i,null,"123456789"],[ah,/^[^\s\w\.$@]+/,null]]);function at(aB,aF){for(var aJ=0;aJ<aF.length;aJ+=2){var aC=aF[aJ+1];if(aC===V){var aD,aH,aL,aK;aD=aF[aJ];aH=aJ+2<aF.length?aF[aJ+2]:aB.length;aL=aB.substring(aD,aH);aK=az(aL,aD);for(var aI=0,aE=aK.length;aI<aE;aI+=2){var aM=aK[aI+1];if(aM===V){var aO=aK[aI];var aN=aI+2<aE?aK[aI+2]:aL.length;var aG=aB.substring(aO,aN);if(aG==="."){aK[aI+1]=ah}else{if(aG in ax){aK[aI+1]=L}else{if(/^@?[A-Z][A-Z$]*[a-z][A-Za-z$]*$/.test(aG)){aK[aI+1]=aG.charAt(0)==="@"?Y:al}}}}}N(aK,aF,aJ,2);aJ+=aK.length-2}}return aF}return function(aC){var aB=au(aC);aB=at(aC,aB);return aB}}var af=m({keywords:M,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function aj(at,ax){for(var aA=0;aA<ax.length;aA+=2){var au=ax[aA+1];if(au===ad){var av,ay;av=ax[aA];ay=aA+2<ax.length?ax[aA+2]:at.length;var aB=af(at.substring(av,ay));for(var az=0,aw=aB.length;az<aw;az+=2){aB[az]+=av}N(aB,ax,aA,2);aA+=aB.length-2}}return ax}function c(at,aB){var aI=false;for(var aF=0;aF<aB.length;aF+=2){var av=aB[aF+1];var ax,aD;if(av===ao){ax=aB[aF];aD=aF+2<aB.length?aB[aF+2]:at.length;aI=/^on|^style$/i.test(at.substring(ax,aD))}else{if(av===s){if(aI){ax=aB[aF];aD=aF+2<aB.length?aB[aF+2]:at.length;var aG=at.substring(ax,aD);var au=aG.length;var aA=(au>=2&&/^[\"\']/.test(aG)&&aG.charAt(0)===aG.charAt(au-1));var aw;var ay;var aC;if(aA){ay=ax+1;aC=aD-1;aw=aG}else{ay=ax+1;aC=aD-1;aw=aG.substring(1,aG.length-1)}var aH=af(aw);for(var aE=0,az=aH.length;aE<az;aE+=2){aH[aE]+=ay}if(aA){aH.push(aC,s);N(aH,aB,aF+2,0)}else{N(aH,aB,aF,2)}}aI=false}}}return aB}function l(au){var at=ae(au);at=I(au,at);at=aj(au,at);at=c(au,at);return at}function P(aJ,au,ay){var aB=[];var aI=0;var ax=null;var aC=null;var av=0;var aH=0;var az=ag(PR_TAB_WIDTH);var aw=/([\r\n ]) /g;var aF=/(^| ) /gm;var aA=/\r\n?|\n/g;var aD=/[ \r\n]$/;var aE=true;function aG(aK){if(aK>aI){if(ax&&ax!==aC){aB.push("</span>");ax=null}if(!ax&&aC){ax=aC;aB.push('<span class="',ax,'">')}var aL=r(az(aJ.substring(aI,aK))).replace(aE?aF:aw,"$1&nbsp;");aE=aD.test(aL);aB.push(aL.replace(aA,"<br />"));aI=aK}}while(true){var at;if(av<au.length){if(aH<ay.length){at=au[av]<=ay[aH]}else{at=true}}else{at=false}if(at){aG(au[av]);if(ax){aB.push("</span>");ax=null}aB.push(au[av+1]);av+=2}else{if(aH<ay.length){aG(ay[aH]);aC=ay[aH+1];aH+=2}else{break}}}aG(aJ.length);if(ax){aB.push("</span>")}return aB.join("")}var A={};function g(av,aw){for(var at=aw.length;--at>=0;){var au=aw[at];if(!A.hasOwnProperty(au)){A[au]=av}else{if("console" in window){console.log("cannot override language handler %s",au)}}}}g(af,["default-code"]);g(l,["default-markup","html","htm","xhtml","xml","xsl"]);g(m({keywords:p,hashComments:true,cStyleComments:true}),["c","cc","cpp","cs","cxx","cyc"]);g(m({keywords:G,cStyleComments:true}),["java"]);g(m({keywords:aa,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);g(m({keywords:ab,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);g(m({keywords:y,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);g(m({keywords:k,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);g(m({keywords:F,cStyleComments:true,regexLiterals:true}),["js"]);function H(ay,aw){try{var az=B(ay);var av=az.source;var at=az.tags;if(!A.hasOwnProperty(aw)){aw=/^\s*</.test(av)?"default-markup":"default-code"}var au=A[aw].call({},av);return P(av,at,au)}catch(ax){if("console" in window){console.log(ax);console.trace()}return ay}}function f(az){var aA=_pr_isIE6();var au=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),document.getElementsByTagName("xmp")];var ay=[];for(var aw=0;aw<au.length;++aw){for(var av=0;av<au[aw].length;++av){ay.push(au[aw][av])}}au=null;var at=0;function ax(){var aG=(PR_SHOULD_USE_CONTINUATION?new Date().getTime()+250:Infinity);for(;at<ay.length&&new Date().getTime()<aG;at++){var aH=ay[at];if(aH.className&&aH.className.indexOf("prettyprint")>=0){var aD=aH.className.match(/\blang-(\w+)\b/);if(aD){aD=aD[1]}var aM=false;for(var aB=aH.parentNode;aB;aB=aB.parentNode){if((aB.tagName==="pre"||aB.tagName==="code"||aB.tagName==="xmp")&&aB.className&&aB.className.indexOf("prettyprint")>=0){aM=true;break}}if(!aM){var aJ=b(aH);aJ=aJ.replace(/(?:\r\n?|\n)$/,"");var aN=H(aJ,aD);if(!R(aH)){aH.innerHTML=aN}else{var aC=document.createElement("PRE");for(var aF=0;aF<aH.attributes.length;++aF){var aO=aH.attributes[aF];if(aO.specified){var aK=aO.name.toLowerCase();if(aK==="class"){aC.className=aO.value}else{aC.setAttribute(aO.name,aO.value)}}}aC.innerHTML=aN;aH.parentNode.replaceChild(aC,aH);aH=aC}if(aA&&aH.tagName==="PRE"){var aI=aH.getElementsByTagName("br");for(var aE=aI.length;--aE>=0;){var aL=aI[aE];aL.parentNode.replaceChild(document.createTextNode("\r\n"),aL)}}}}}if(at<ay.length){setTimeout(ax,250)}else{if(az){az()}}}ax()}window.PR_normalizedHtml=an;window.prettyPrintOne=H;window.prettyPrint=f;window.PR={createSimpleLexer:j,registerLangHandler:g,sourceDecorator:m,PR_ATTRIB_NAME:ao,PR_ATTRIB_VALUE:s,PR_COMMENT:o,PR_DECLARATION:U,PR_KEYWORD:L,PR_LITERAL:Y,PR_NOCODE:ak,PR_PLAIN:V,PR_PUNCTUATION:ah,PR_SOURCE:ad,PR_STRING:O,PR_TAG:q,PR_TYPE:al}})(); \ No newline at end of file
diff --git a/templates/content/js/com.cnprog.utils.js b/templates/content/js/com.cnprog.utils.js
index a5f0e982..683b7a3f 100644
--- a/templates/content/js/com.cnprog.utils.js
+++ b/templates/content/js/com.cnprog.utils.js
@@ -1,5 +1,6 @@
var showMessage = function(object, msg) {
- var div = $('<div class="vote-notification"><h3>' + msg + '</h3>(点击消息框关闭)</div>');
+ var div = $('<div class="vote-notification"><h3>' + msg + '</h3>('
+ + $.i18n._('click to close') + ')</div>');
div.click(function(event) {
$(".vote-notification").fadeOut("fast", function() { $(this).remove(); });
@@ -33,7 +34,12 @@ var notify = function() {
} ();
function appendLoader(containerSelector) {
- $(containerSelector).append('<img class="ajax-loader" src="/content/images/indicator.gif" title="读取中..." alt="读取中..." />');
+ $(containerSelector).append('<img class="ajax-loader" '
+ +'src="/content/images/indicator.gif" title="'
+ +$.i18n._('loading...')
+ +'" alt="'
+ +$.i18n._('loading...')
+ +'" />');
}
function removeLoader() {
@@ -96,16 +102,16 @@ var CPValidator = function(){
getQuestionFormMessages: function(){
return {
tags: {
- required: " 标签不能为空。",
- maxlength: " 最多5个标签,每个标签长度小于20个字符。"
+ required: " " + $.i18n._('tags cannot be empty'),
+ maxlength: " " + $.i18n._('tablimits info'),
},
text: {
- required: " 内容不能为空。",
- minlength: jQuery.format(" 请输入至少 {0} 字符。")
+ required: " " + $.i18n._('content cannot be empty'),
+ minlength: jQuery.format(' ' + $.i18n._('content minchars'))
},
title: {
- required: " 请输入标题。",
- minlength: jQuery.format(" 请输入至少 {0} 字符。")
+ required: " " + $.i18n._('please enter title'),
+ minlength: jQuery.format(' ' + $.i18n._('title minchars'))
}
};
}
diff --git a/templates/content/js/jquery.i18n.js b/templates/content/js/jquery.i18n.js
new file mode 100644
index 00000000..0a155a31
--- /dev/null
+++ b/templates/content/js/jquery.i18n.js
@@ -0,0 +1,133 @@
+/*
+ * jQuery i18n plugin
+ * @requires jQuery v1.1 or later
+ *
+ * Examples at: http://recurser.com/articles/2008/02/21/jquery-i18n-translation-plugin/
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Based on 'javascript i18n that almost doesn't suck' by markos
+ * http://markos.gaivo.net/blog/?p=100
+ *
+ * Revision: $Id$
+ * Version: 1.0.0 Feb-10-2008
+ */
+ (function($) {
+/**
+ * i18n provides a mechanism for translating strings using a jscript dictionary.
+ *
+ */
+
+
+/*
+ * i18n property list
+ */
+$.i18n = {
+
+/**
+ * setDictionary()
+ * Initialise the dictionary and translate nodes
+ *
+ * @param property_list i18n_dict : The dictionary to use for translation
+ */
+ setDictionary: function(i18n_dict) {
+ i18n_dict = i18n_dict;
+ },
+
+/**
+ * _()
+ * The actual translation function. Looks the given string up in the
+ * dictionary and returns the translation if one exists. If a translation
+ * is not found, returns the original word
+ *
+ * @param string str : The string to translate
+ * @param property_list params : params for using printf() on the string
+ * @return string : Translated word
+ *
+ */
+ _: function (str, params) {
+ var transl = str;
+ if (i18n_dict&& i18n_dict[str]) {
+ transl = i18n_dict[str];
+ }
+ return this.printf(transl, params);
+ },
+
+/**
+ * toEntity()
+ * Change non-ASCII characters to entity representation
+ *
+ * @param string str : The string to transform
+ * @return string result : Original string with non-ASCII content converted to entities
+ *
+ */
+ toEntity: function (str) {
+ var result = '';
+ for (var i=0;i<str.length; i++) {
+ if (str.charCodeAt(i) > 128)
+ result += "&#"+str.charCodeAt(i)+";";
+ else
+ result += str.charAt(i);
+ }
+ return result;
+ },
+
+/**
+ * stripStr()
+ *
+ * @param string str : The string to strip
+ * @return string result : Stripped string
+ *
+ */
+ stripStr: function(str) {
+ return str.replace(/^\s*/, "").replace(/\s*$/, "");
+ },
+
+/**
+ * stripStrML()
+ *
+ * @param string str : The multi-line string to strip
+ * @return string result : Stripped string
+ *
+ */
+ stripStrML: function(str) {
+ // Split because m flag doesn't exist before JS1.5 and we need to
+ // strip newlines anyway
+ var parts = str.split('\n');
+ for (var i=0; i<parts.length; i++)
+ parts[i] = stripStr(parts[i]);
+
+ // Don't join with empty strings, because it "concats" words
+ // And strip again
+ return stripStr(parts.join(" "));
+ },
+
+/*
+ * printf()
+ * C-printf like function, which substitutes %s with parameters
+ * given in list. %%s is used to escape %s.
+ *
+ * Doesn't work in IE5.0 (splice)
+ *
+ * @param string S : string to perform printf on.
+ * @param string L : Array of arguments for printf()
+ */
+ printf: function(S, L) {
+ if (!L) return S;
+
+ var nS = "";
+ var tS = S.split("%s");
+
+ for(var i=0; i<L.length; i++) {
+ if (tS[i].lastIndexOf('%') == tS[i].length-1 && i != L.length-1)
+ tS[i] += "s"+tS.splice(i+1,1)[0];
+ nS += tS[i] + L[i];
+ }
+ return nS + tS[tS.length-1];
+ }
+
+};
+
+
+})(jQuery);
diff --git a/templates/content/js/wmd/wmd.js b/templates/content/js/wmd/wmd.js
index d83780d6..7b611dba 100644
--- a/templates/content/js/wmd/wmd.js
+++ b/templates/content/js/wmd/wmd.js
@@ -27,18 +27,18 @@ Attacklab.wmdBase = function(){
global.isOpera = /opera/.test(nav.userAgent.toLowerCase());
global.isKonqueror = /konqueror/.test(nav.userAgent.toLowerCase());
- var toolbar_strong_label = "粗体 <strong> Ctrl-B";
- var toolbar_emphasis_label = "斜体 <em> Ctrl-I";
- var toolbar_hyperlink_label = "超链接 <a> Ctrl-L";
- var toolbar_blockquote_label = "引用 <blockquote> Ctrl-.";
- var toolbar_code_label = "代码 <pre><code> Ctrl-K";
- var toolbar_image_label = "图片 <img> Ctrl-G";
- var toolbar_numbered_label = "数字编号列表 <ol> Ctrl-O";
- var toolbar_bulleted_label = "项目符号列表 <ul> Ctrl-U";
- var toolbar_heading_label = "标题 <h1>/<h2> Ctrl-H";
- var toolbar_horizontal_label = "水平线 <hr> Ctrl-R";
- var toolbar_undo_label = "撤销 Ctrl-Z";
- var toolbar_redo_label = "重做 Ctrl-Y";
+ var toolbar_strong_label = $.i18n._('bold') + " <strong> Ctrl-B";
+ var toolbar_emphasis_label = $.i18n._('italic') + " <em> Ctrl-I";
+ var toolbar_hyperlink_label = $.i18n._('link') + " <a> Ctrl-L";
+ var toolbar_blockquote_label = $.i18n._('quote') + " <blockquote> Ctrl-.";
+ var toolbar_code_label = $.i18n._('preformatted text') + " <pre><code> Ctrl-K";
+ var toolbar_image_label = $.i18n._('image') + " <img> Ctrl-G";
+ var toolbar_numbered_label = $.i18n._('numbered list') + " <ol> Ctrl-O";
+ var toolbar_bulleted_label = $.i18n._('bulleted list') + " <ul> Ctrl-U";
+ var toolbar_heading_label = $.i18n._('heading') + " <h1>/<h2> Ctrl-H";
+ var toolbar_horizontal_label = $.i18n._('horizontal bar') + " <hr> Ctrl-R";
+ var toolbar_undo_label = $.i18n._('undo') + " Ctrl-Z";
+ var toolbar_redo_label = $.i18n._('redo') + " Ctrl-Y";
// -------------------------------------------------------------------
// YOUR CHANGES GO HERE
@@ -49,11 +49,9 @@ Attacklab.wmdBase = function(){
// The text that appears on the upper part of the dialog box when
// entering links.
- var imageDialogText = "<p style='margin-top: 0px'><b>输入图片地址</b></p><p>示例:<br />"+
- "http://www.cnprog.com/images/temp.jpg \"我的截图\"</p>";
- var linkDialogText = "<p style='margin-top: 0px'><b>输入Web地址</b></p><p>示例:<br />"+
- "http://www.cnprog.com/ \"我的网站\"</p>";
- var uploadImageHTML ="<div>或者上传本地图片:</div>" +
+ var imageDialogText = "<p style='margin-top: 0px'>" + $.i18n._('enter image url') + '</p>';
+ var linkDialogText = "<p style='margin-top: 0px'>" + $.i18n._('enter url') + '</p>';
+ var uploadImageHTML ="<div>" + $.i18n._('upload image') + "</div>" +
"<input type=\"file\" name=\"file-upload\" id=\"file-upload\" size=\"26\" "+
"onchange=\"return ajaxFileUpload($('#image-url'));\"/><br>" +
"<img id=\"loading\" src=\"/content/images/indicator.gif\" style=\"display:none;\"/>";
@@ -1079,7 +1077,7 @@ Attacklab.wmdBase = function(){
}
else {
// mac and other non-Windows platforms
- redoButton.title = "重做 - Ctrl+Shift+Z";
+ redoButton.title = $.i18n._('redo') + " - Ctrl+Shift+Z";
}
redoButton.XShift = "-220px";
redoButton.execute = function(manager){
diff --git a/templates/header.html b/templates/header.html
index 1da107b6..fb07a4c0 100644
--- a/templates/header.html
+++ b/templates/header.html
@@ -1,13 +1,15 @@
+<!-- template header.html -->
{% load extra_tags %}
{% load i18n %}
<div id="top">
<div id="header">
{% if request.user.is_authenticated %}
- <a href="/users/{{ request.user.id }}/{{ request.user.username }}/">{{ request.user.username }}</a> {% get_score_badge request.user %} <a href="/logout/">{% trans "Logout" %}</a>
+ <a href="/users/{{ request.user.id }}/{{ request.user.username }}/">{{ request.user.username }}</a> {% get_score_badge request.user %}
+ <a href="{% url user_signout %}">{% trans "logout" %}</a>
{% else %}
- <a href="/account/signin">{% trans "Login" %}</a>
+ <a href="{% url user_signin %}">{% trans "login" %}</a>
{% endif %}
- <a href="/about">{% trans "About us" %}</a>
+ <a href="/about">{% trans "about" %}</a>
<a href="/faq">{% trans "faq" %}</a>
</div>
</div>
@@ -18,24 +20,26 @@
<td width="23%">
<div id="logo">
<a href="/">
- <img src="/content/images/logo.png" title="{% trans 'link to homepage'%}" />
+ <img src="/content/images/logo.png" title="{% trans "back to home page" %}" />
</a>
</div>
</td>
<td width="77%" valign="bottom">
<div class="nav">
- <a id="nav_questions" href="/questions/" >{% trans "Questions" %}</a>
- <a id="nav_tags" href="/tags/">{% trans "Tags" %}</a>
- <a id="nav_users" href="/users/">{% trans "Users" %}</a>
- <a id="nav_books" href="/books/">{% trans "Books" %}</a>
- <a id="nav_badges" href="/badges/">{% trans "Badges" %}</a>
- <a id="nav_unanswered" href="/questions/unanswered/">{% trans "Unanswered" %}</a>
+ <a id="nav_questions" href="/questions/" >{% trans "questions" %}</a>
+ <a id="nav_tags" href="/tags/">{% trans "tags" %}</a>
+ <a id="nav_users" href="/users/">{% trans "users" %}</a>
+ <!--<a id="nav_books" href="/books/">{% trans "books" %}</a>-->
+ <a id="nav_badges" href="/badges/">{% trans "badges" %}</a>
+ <a id="nav_unanswered" href="/questions/unanswered/">{% trans "unanswered questions" %}</a>
+ {% comment %}<!-- i think this needs to be removed -e.f. -->
{% if request.user.is_authenticated %}
- <a id="nav_profile" href="/users/{{ request.user.id }}/{{ request.user.username }}/">{% trans "Profile" %}</a>
+ <a id="nav_profile" href="/users/{{ request.user.id }}/{{ request.user.username }}/">{% trans "my profile" %}</a>
{% endif %}
+ {% endcomment %}
<div class="focus">
- <a id="nav_ask" href="/questions/ask/" class="special">{% trans "Ask a question" %}</a>
+ <a id="nav_ask" href="/questions/ask/" class="special">{% trans "ask a question" %}</a>
</div>
</div>
@@ -50,12 +54,12 @@
<form action="/search/" method="GET">
<div>
<input type="text" class="searchInput" value="{{ keywords }}" name="q" id="keywords" >
- <input type="submit" name="Submit" value="{% trans 'Search' %}" class="searchBtn" >
+ <input type="submit" name="Submit" value="{% trans "search" %}" class="searchBtn" >
</div>
<div class="options">
- <input id="type-question" type="radio" class="" value="question" name="t" checked >{% trans "Questions" %}
- <input id="type-tag" type="radio" class="" value="tag" name="t" >{% trans "Tags" %}
- <input id="type-user" type="radio" class="" value="user" name="t" >{% trans "Users" %}
+ <input id="type-question" type="radio" class="" value="question" name="t" checked >{% trans "questions" %}
+ <input id="type-tag" type="radio" class="" value="tag" name="t" >{% trans "tags" %}
+ <input id="type-user" type="radio" class="" value="user" name="t" >{% trans "users" %}
</div>
</form>
</td>
@@ -63,3 +67,4 @@
</table>
</div>
</div>
+<!-- end template header.html -->
diff --git a/templates/index.html b/templates/index.html
index ba3e2229..db2bb12e 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -1,8 +1,8 @@
{% extends "base.html" %}
+{% load i18n %}
{% load extra_tags %}
{% load humanize %}
{% load extra_filters %}
-{% load i18n %}
{% block title %}{% spaceless %}{% trans "Home" %}{% endspaceless %}{% endblock %}
{% block meta %}<meta name="keywords" content="{{ APP_KEYWORDS }}" />
<meta name="description" content="{{ APP_DESCRIPTION }}" />{% endblock %}
@@ -20,12 +20,13 @@
<div class="tabBar">
<div class="headQuestions">{% trans "Questions" %}</div>
<div class="tabsA">
- <a id="latest" href="?sort=latest" title="{% trans 'Newest updated questions' %}" >{% trans "Newest" %}</a>
- <a id="hottest" href="?sort=hottest" title="{% trans 'Questions with most answers' %}" >{% trans "Hottest" %}</a>
- <a id="mostvoted" href="?sort=mostvoted" title="{% trans 'Questions with most votes' %}" >{% trans "Best" %}</a>
- <a id="all" href="/questions/" title="{% trans 'All questions' %}" >{% trans "All" %}</a>
+ <a id="latest" href="?sort=latest" title="{% trans "last updated questions" %}" >{% trans "newest" %}</a>
+ <a id="hottest" href="?sort=hottest" title="{% trans "hottest questions" %}" >{% trans "hottest" %}</a>
+ <a id="mostvoted" href="?sort=mostvoted" title="{% trans "most voted questions" %}" >{% trans "most voted" %}</a>
+ <a id="all" href="/questions/" title="{% trans "all questions" %}" >{% trans "all questions" %}</a>
</div>
</div>
+<!-- 问题列表 -->
<div id="listA">
{% for question in questions %}
<div class="qstA">
@@ -42,9 +43,9 @@
<td><span class="num">{{ question.view_count|cnprog_intword|safe }}</span> </td>
</tr>
<tr>
- <td><span class="unit">{% trans "Answers" %}</span></td>
- <td><span class="unit">{% trans "Votes" %}</span></td>
- <td><span class="unit">{% trans "Visits" %}</span></td>
+ <td><span class="unit">{% trans "answers" %}</span></td>
+ <td><span class="unit">{% trans "votes" %}</span></td>
+ <td><span class="unit">{% trans "views" %}</span></td>
</tr>
</table>
</div>
@@ -52,7 +53,7 @@
{{ question.summary }}...
</div>
{% if question.wiki %}
- <span class="from wiki">{% trans "Community wiki" %}</span>
+ <span class="from wiki">{% trans "community wiki" %}</span>
<span class="date" title="{{ question.last_activity_at }}">{% diff_date question.last_activity_at %}</span>
{% else %}
<div class="from">
@@ -64,7 +65,7 @@
{% endif %}
<div class="tags">
{% for tag in question.tagname_list %}
- <a href="{% url forum.views.tag tag|urlencode %}" title="{% trans 'Browse questions with tag of ' %}'{{ tag }}'" rel="tag">{{ tag }}</a>
+ <a href="{% url forum.views.tag tag|urlencode %}" title="{% trans "see questions tagged" %}'{{ tag }}'{% trans "using tags" %}" rel="tag">{{ tag }}</a>
{% endfor %}
</div>
</div>
@@ -75,11 +76,11 @@
{% block sidebar %}
{% if not request.user.is_authenticated %}
<div class="boxA">
- <h3>{% trans "Welcome" %}</h3>
+ <h3>{% trans "welcome to website" %}</h3>
<div class="body">
- {{ APP_INTRO|safe }}
- <div class="more"><a href="/about">{% trans "About us" %} »</a></div>
- <div class="more"><a href="/faq">FAQ »</a></div>
+ {{ APP_INTRO|safe }}
+ <div class="more"><a href="/about">{% trans "about" %} »</a></div>
+ <div class="more"><a href="/faq">{% trans "faq" %} »</a></div>
</div>
</div>
{% endif %}
@@ -88,33 +89,34 @@
<div class="body">
<p class="tagsbox">
{% for tag in tags %}
- <a rel="tag" title="{% trans 'Browse questions with tag of ' %}'{{ tag.name }}'" href="{% url forum.views.tag tag.name|urlencode %}">{{ tag.name }}</a>
+ <a rel="tag"
+ title="{% blocktrans with tag.name as tagname %}see questions tagged '{{tagname}}'{% endblocktrans %}" href="{% url forum.views.tag tag.name|urlencode %}">{{ tag.name }}</a>
{% endfor %}
</p>
- <div class="more"><a href="/tags">{% trans "Popular tags" %} »</a> </div>
+ <div class="more"><a href="/tags">{% trans "popular tags" %} »</a> </div>
</div>
</div>
<div class="boxB">
- <h3>{% trans "Recent badges" %}</h3>
+ <h3>{% trans "Recent awards" %}</h3>
<div class="body">
<ul class="badge-list">
{% for award in awards %}
<li>
<a href="/badges/{{award.badge_id}}/{{award.badge_name}}" title="{{ award.badge_description }}" class="medal">
- <span class="badge{{ award.badge_type }}">&#9679;</span>&nbsp;{{ award.badge_name }}</a>
+ <span class="badge{{ award.badge_type }}">&#9679;</span>&nbsp;{{ award.badge_name }}</a> {% trans "given to" %}
<a href="/users/{{award.user_id}}/{{award.user_name}}">{{ award.user_name }}</a>
</li>
{% endfor %}
</ul>
- <div class="more"><a href="/badges/">{% trans "All badges" %} »</a> </div>
+ <div class="more"><a href="/badges/">{% trans "all awards" %} »</a> </div>
</div>
</div>
<div id="feeds">
-<a href="/feeds/rss" title="{% trans 'RSS feed of recent 30 questions' %}">{% trans "Subscribe" %}</a>
+<a href="/feeds/rss" title="{% trans "subscribe to last 30 questions by RSS" %}">{% trans "subscribe to the questions feed" %}</a>
</div>
{% endblock %}
{% block tail %}
<div style="padding:5px 0 5px 5px;">
-<span class="evenMore">{% trans "Are you looking for more questions? Try to browse" %} <a href="/questions/">{% trans "All questions" %}</a>{% trans " or "%} <a href="/tags/">{% trans "Popular tags" %}</a>{% trans ". Please help us answer "%}<a href="/questions/unanswered">{% trans "Unanswered questions" %}</a></span>
+<span class="evenMore">{% trans "Still looking for more? See" %} <a href="/questions/">{% trans "complete list of quesionts" %}</a>, {% trans "or" %} <a href="/tags/">{% trans "popular tags" %}</a>{% trans "." %} {% trans "Please help us answer" %} <a href="/questions/unanswered">{% trans "unanswered questions" %}</a>{% trans "." %}</span>
</div>
{% endblock %}
diff --git a/templates/logout.html b/templates/logout.html
index 48a2deaf..6270924a 100644
--- a/templates/logout.html
+++ b/templates/logout.html
@@ -1,3 +1,4 @@
+<!-- template logout.html -->
{% extends "base_content.html" %}
{% load extra_tags %}
{% load humanize %}
@@ -6,20 +7,19 @@
{% block forejs %}
<script type="text/javascript">
$().ready(function(){
- $('#btLogout').bind('click', function(){ window.location.href='/account/signout/?next={{ next }}'; });
+ $('#btLogout').bind('click', function(){ window.location.href='{% url user_signout %}?next={{ next }}'; });
});
</script>
{% endblock %}
{% block content %}
<div class="headNormal">
- {% trans "Logout" %}
+ {% trans "Logout" %}
</div>
<div id="main-body" style="width:100%">
- <input id="btLogout" type="button" class="submit" value="OK" style="width:150px">
+ <p>{% trans "As a registered user you can login with your OpenID, log out of the site or permanently remove your account." %}</p>
+ <input id="btLogout" type="button" class="submit" value="{% trans "Logout now" %}"><!-- style="width:150px">-->
<br><br>
</div>
{% endblock %}
-
-
-
+<!-- ent template logout.html -->
diff --git a/templates/privacy.html b/templates/privacy.html
index b0f02cd7..335aba92 100644
--- a/templates/privacy.html
+++ b/templates/privacy.html
@@ -1,40 +1,43 @@
+<!-- privacy.html -->
{% extends "base_content.html" %}
{% load extra_tags %}
+{% load i18n %}
{% load humanize %}
-{% block title %}{% spaceless %}隐私政策{% endspaceless %}{% endblock %}
+{% block title %}{% spaceless %}{% trans "Privacy policy" %}{% endspaceless %}{% endblock %}
{% block forejs %}
{% endblock %}
{% block content %}
<div class="headNormal">
- 隐私政策
+ {% trans "Privacy policy" %}
</div>
<div id="main-body" style="width:100%">
<p>
- CNProg承认用户隐私的重要性。本文件概述在您浏览CNProg过程中所接收和收集的个人信息的种类,以及CNProg所采取的保护信息的一些措施。CNProg希望这将有助于您在知情的情况下,就和我们共享个人信息的问题作出决定。
+ {% trans "general message about privacy" %}
</p>
- <h3 class="subtitle">网站访问者</h3>
- <p> 当您访问本网站或使用我们的某些在线服务时,服务器会自动记录信息,包括但不限于URL、IP地址、浏览器的类型、屏幕分辨率、系统类型和使用的语言以及访问日期和时间。我们的目的是为了向您提供更好的用户服务,包括可能为您提供定制的在线服务。
+ <h3 class="subtitle">{% trans "Site Visitors" %}</h3>
+ <p>
+ {% trans "what technical information is collected about visitors" %}
</p>
- <h3 class="subtitle">个人身份信息</h3>
- <p> 在登录使用CNProg的提问和回答功能时,我们要求使用者提供用户名、密码、电子邮件等信息。CNProg收集这类关于个人身份的信息只是为了登录系统获得使用功能的目的。我们不会向任何其他社区用户、个人或第三方透露您的密码或者电子邮件信息。用户可以选择性地填写用户资料、个人网站、年龄、城市等信息,我们收集这些内容为了使用户能够更容易和更满意地使用CNProg提供的网页和服务。
+ <h3 class="subtitle">{% trans "Personal Information" %}</h3>
+ <p>
+ {% trans "details on personal information policies" %}
</p>
- <h3 class="subtitle">其他服务</h3>
- <p> CNProg可能会收集和统计用户访问本站的概况数据。例如,CNProg可能会检测网站最流行的部分功能。CNProg可能会公开显示或者提供给第三方使用该数据。但是,CNProg不会公开您的身份信息。
+ <h3 class="subtitle">{% trans "Other Services" %}</h3>
+ <p>
+ {% trans "details on sharing data with third parties" %}
</p>
- <h3 class="subtitle">Cookie</h3>
- <p> 访问CNProg时,我们会向您的计算机发送一个或多个专门用于识别您的浏览器的Cookie(包含一个字符串的小文件)。 使用 Cookie 的目的是通过储存用户偏好、跟踪用户倾向(例如搜索方法)来提高我们的服务质量。大多数浏览器的初始设置均为接受 Cookie,但也可以将其重置为拒绝所有 Cookie 或在收到 Cookie 时提示。不过,如果禁用 Cookie,某些功能和服务可能无法正常运行。
+ <h3 class="subtitle">Cookies</h3>
+ <p>
+ {% trans "cookie policy details" %}
</p>
-
- <h3 class="subtitle">政策更改</h3>
- <p> 我们可能在事先通知或不通知的情况下随时更改此"隐私政策",我们建议用户时常查看CNProg隐私政策的改动,在任何改动生效后您的继续访问和使用本站,我们假设您已同意了CNProg以上的所有条款。
+ <h3 class="subtitle">{% trans "Policy Changes" %}</h3>
+ <p>{% trans "how privacy policies can be changed" %}
</p>
<br><br>
</div>
{% endblock %}
-
-
-
+<!-- end privacy.html -->
diff --git a/templates/question.html b/templates/question.html
index 9cbe1664..5ba08b63 100644
--- a/templates/question.html
+++ b/templates/question.html
@@ -1,13 +1,15 @@
+<!-- question.html -->
{% extends "base.html" %}{% load extra_tags %}{% load extra_filters %}{% load humanize %}
+{% load i18n %}
{% block title %}{% spaceless %}{{ question.get_question_title }}{% endspaceless %}{% endblock %}
{% block forejs %}
{% if not question.closed and request.user.is_authenticated %}
<script type='text/javascript' src='/content/js/com.cnprog.editor.js'></script>
- <script type='text/javascript' src='/content/js/wmd/showdown-min.js'></script>
- <script type='text/javascript' src='/content/js/wmd/wmd-min.js'></script>
+ <script type='text/javascript' src='/content/js/wmd/showdown.js'></script>
+ <script type='text/javascript' src='/content/js/wmd/wmd.js'></script>
<link rel="stylesheet" type="text/css" href="/content/js/wmd/wmd.css" />
{% endif %}
- <script type='text/javascript' src='/content/js/com.cnprog.post.pack.js'></script>
+ <script type='text/javascript' src='/content/js/com.cnprog.post.js'></script>
<script type='text/javascript' src='/content/js/jquery.validate.pack.js'></script>
<script type="text/javascript">
// define reputation needs for comments
@@ -32,10 +34,10 @@
captureLength: 5, callback: lanai.highlightSyntax});
var display = true;
- var txt = "[禁用预览]";
+ var txt = "[{% trans "hide preview" %}]";
$('#pre-collapse').text(txt);
$('#pre-collapse').bind('click', function(){
- txt = display ? "[启用预览]" : "[禁用预览]";
+ txt = display ? "[{% trans "show preview" %}]" : "[{% trans "hide preview" %}]";
display = !display;
$('#previewer').toggle();
$('#pre-collapse').text(txt);
@@ -59,29 +61,39 @@
<td style="width:30px;vertical-align:top">
<div class="vote-buttons">
{% if question_vote %}
- <img id="question-img-upvote-{{ question.id }}" class="question-img-upvote" src="/content/images/vote-arrow-up{% if question_vote.is_upvote %}-on{% endif %}.png" title="这篇帖子有价值(再次点击取消操作)" >
- <div id="question-vote-number-{{ question.id }}" class="vote-number" title="当前总票数">
+ <img id="question-img-upvote-{{ question.id }}" class="question-img-upvote"
+ src="/content/images/vote-arrow-up{% if question_vote.is_upvote %}-on{% endif %}.png"
+ title="{% trans "i like this post (click again to cancel)" %}" >
+ <div id="question-vote-number-{{ question.id }}" class="vote-number"
+ title="{% trans "current number of votes" %}">
{{ question.score }}
</div>
- <img id="question-img-downvote-{{ question.id }}" class="question-img-downvote" src="/content/images/vote-arrow-down{% if question_vote.is_downvote %}-on{% endif %}.png" title="这篇帖子没有价值(再次点击取消操作)" >
+ <img id="question-img-downvote-{{ question.id }}" class="question-img-downvote"
+ src="/content/images/vote-arrow-down{% if question_vote.is_downvote %}-on{% endif %}.png"
+ title="{% trans "i dont like this post (click again to cancel)" %}" >
{% else %}
- <img id="question-img-upvote-{{ question.id }}" class="question-img-upvote" src="/content/images/vote-arrow-up.png" title="这篇帖子有价值(再次点击取消操作)" >
- <div id="question-vote-number-{{ question.id }}" class="vote-number" title="当前总票数">
+ <img id="question-img-upvote-{{ question.id }}" class="question-img-upvote"
+ src="/content/images/vote-arrow-up.png"
+ title="{% trans "i like this post (click again to cancel)" %}" >
+ <div id="question-vote-number-{{ question.id }}" class="vote-number"
+ title="{% trans "current number of votes" %}">
{{ question.score }}
</div>
- <img id="question-img-downvote-{{ question.id }}" class="question-img-downvote" src="/content/images/vote-arrow-down.png" title="这篇帖子没有价值(再次点击取消操作)" >
+ <img id="question-img-downvote-{{ question.id }}" class="question-img-downvote"
+ src="/content/images/vote-arrow-down.png" title="{% trans "i dont like this post (click again to cancel)" %}" >
{% endif %}
<br><br>
{% if favorited %}
- <img class="question-img-favorite" src="/content/images/vote-favorite-on.png" title="我要收藏这个问题(再次点击取消操作)" >
+ <img class="question-img-favorite" src="/content/images/vote-favorite-on.png"
+ title="{% trans "mark this question as favorite (click again to cancel)" %}" >
<div id="favorite-number" class="favorite-number my-favorite-number">
{{ question.favourite_count }}
</div>
{% else %}
- <img class="question-img-favorite" src="/content/images/vote-favorite-off.png" title="我要收藏这个问题(再次点击取消操作)" >
-
+ <img class="question-img-favorite" src="/content/images/vote-favorite-off.png"
+ title="{% trans "remove favorite mark from this question (click again to restore mark)" %}" >
<div id="favorite-number" class="favorite-number">{% ifnotequal question.favourite_count 0 %}{{ question.favourite_count }}{% endifnotequal %}
</div>
@@ -96,7 +108,8 @@
</div>
<div id="question-tags" class="tags" >
{% for tag in question.tagname_list %}
- <a href="{% url forum.views.tag tag|urlencode %}" class="post-tag" title="查看有关'{{ tag }}'的问题" rel="tag">{{ tag }}</a>
+ <a href="{% url forum.views.tag tag|urlencode %}" class="post-tag"
+ title="{% trans "see questions tagged" %}'{{ tag }}'{% trans "using tags" %}" rel="tag">{{ tag }}</a>
{% endfor %}
</div>
<div id="question-controls" style="clear:both;">
@@ -105,27 +118,30 @@
<td width="210px" style="vertical-align:top">
{% if request.user|can_edit_post:question %}
- <span class="action-link"><a href="{% url edit_question question.id %}">编辑</a></span>
+ <span class="action-link"><a href="{% url edit_question question.id %}">{% trans 'edit' %}</a></span>
<span class="action-link-separator">|</span>
{% endif %}
{% if request.user|can_delete_post:question %}
- <span class="action-link"><a id="question-delete-link-{{question.id}}">删除</a></span>
+ <span class="action-link"><a id="question-delete-link-{{question.id}}">{% trans "delete" %}</a></span>
<span class="action-link-separator">|</span>
{% endif %}
{% if question.closed %}
{% if request.user|can_reopen_question:question %}
- <span class="action-link"><a href="{% url reopen question.id %}">打开</a></span>
+ <span class="action-link"><a href="{% url reopen question.id %}">{% trans "reopen" %}</a></span>
<span class="action-link-separator">|</span>
{% endif %}
{% else %}
{% if request.user|can_close_question:question %}
- <span class="action-link"><a href="{% url close question.id %}">关闭</a></span>
+ <span class="action-link"><a href="{% url close question.id %}">{% trans "close" %}</a></span>
<span class="action-link-separator">|</span>
{% endif %}
{% endif %}
- <span id="question-offensive-flag-{{ question.id }}" class="offensive-flag" title="检举该帖为垃“水帖”(含广告、人身攻击、恶意言论等)"><a>垃圾帖?</a><span class="darkred">{% if request.user|can_view_offensive_flags %}{% if question.offensive_flag_count %}({{ question.offensive_flag_count }}){% endif %}{% endif %}</span>
-
+ <span id="question-offensive-flag-{{ question.id }}" class="offensive-flag"
+ title="{% trans "report as offensive (i.e containing spam, advertising, malicious text, etc.)" %}">
+ <a>{% trans "flag offensive" %}</a>
+ <span class="darkred">{% if request.user|can_view_offensive_flags %}
+ {% if question.offensive_flag_count %}({{ question.offensive_flag_count }}){% endif %}{% endif %}</span>
</span>
</td>
@@ -135,7 +151,7 @@
<table width="200px" >
<tr>
<td colspan="2">
- 更新于<a href="{% url question_revisions question.id %}"><strong title="{{question.last_edited_at }}">{% diff_date question.last_edited_at %}</strong></a>
+ {% trans "updated" %} <a href="{% url question_revisions question.id %}"><strong title="{{question.last_edited_at }}">{% diff_date question.last_edited_at %}</strong></a>
</td>
</tr>
@@ -177,14 +193,14 @@
</td>
<td style="vertical-align:top">
{% if question.wiki %}
- <span class="wiki-category">社区Wiki</span>
+ <span class="wiki-category">{% trans "community wiki" %}</span>
<div style="margin-bottom:10px"></div>
{% else %}
<div class="question-mark">
<table width="200px">
<tr>
<td colspan="2">
- 提问于<strong title="{{ question.added_at }}">{% diff_date question.added_at %}</strong>
+ {% trans "asked" %} <strong title="{{ question.added_at }}">{% diff_date question.added_at %}</strong>
</td>
</tr>
@@ -213,7 +229,10 @@
<div class="post-comments" style="margin-bottom:20px">
<input id="can-post-comments-question-{{question.id}}" type="hidden" value="{{ request.user|can_add_comments }}"/>
- <a id="comments-link-question-{{question.id}}" class="comments-link">{% if question.comment_count %}评论 <strong>({{question.comment_count}})</strong>{% else %}添加评论{% endif %}</a>
+ <a id="comments-link-question-{{question.id}}" class="comments-link">
+ {% if question.comment_count %}{% trans "comments" %} <strong>({{question.comment_count}})</strong>
+ {% else %}{% trans "add comment" %}
+ {% endif %}</a>
<div id="comments-question-{{question.id}}" class="comments-container">
<div class="comments"/></div>
</div>
@@ -225,41 +244,49 @@
</table>
{% if question.closed %}
<div class="question-status" style="margin-bottom:15px">
- <h3>问题以“{{ question.get_close_reason_display }}”的原因已被 <a href="{{ question.closed_by.get_profile_url }}">{{ question.closed_by.username }}</a> 于{% diff_date question.closed_at %}<font class="darkred">关闭</font></h3>
+ <h3>{% blocktrans %}The question has been closed for the following reason "{{ question.get_close_reason_display }}" by{% endblocktrans %}
+ <a href="{{ question.closed_by.get_profile_url }}">{{ question.closed_by.username }}</a>
+ {% blocktrans %}close date {{question.closed_at}}{% endblocktrans %}</h3>
</div>
{% endif %}
{% ifnotequal question.answer_count 0 %}
<div class="tabBar">
<a name="sort-top"></a>
- <div class="headQuestions">{{ question.answer_count }}个回答:</div>
+ <div class="headQuestions">{{ question.answer_count }}{% trans "Answers" %}:</div>
<div class="tabsA">
- <a id="oldest" href="?sort=oldest#sort-top" title="最先回答显示在最前面">最先回答</a>
- <a id="latest" href="?sort=latest#sort-top" title="最晚回答显示在最前面">最近回答</a>
- <a id="votes" href="?sort=votes#sort-top" title="投票次数最多的显示在最前面">投票最多</a>
+ <a id="oldest" href="?sort=oldest#sort-top" title="{% trans "oldest answers will be shown first" %}">{% trans "oldest answers" %}</a>
+ <a id="latest" href="?sort=latest#sort-top" title="{% trans "newest answers will be shown first" %}">{% trans "newest answers" %}</a>
+ <a id="votes" href="?sort=votes#sort-top" title="{% trans "most voted answers will be shown first" %}">{% trans "popular answers" %}</a>
</div>
</div>
{% cnprog_paginator context %}
{% for answer in answers %}
<a name="{{ answer.id }}"></a>
- <div id="answer-container-{{ answer.id }}" class="answer {% if answer.accepted %}accepted-answer{% endif %}{% if answer.deleted %}deleted{% endif %} {% ifequal answer.author_id question.author_id %} answered-by-owner{% endifequal %}">
+ <div id="answer-container-{{ answer.id }}" class="answer {% if answer.accepted %}accepted-answer{% endif %} {% ifequal answer.author_id question.author_id %} answered-by-owner{% endifequal %} {% if answer.deleted %}deleted{% endif %}">
<table style="width:100%;">
<tr>
<td style="width:30px;vertical-align:top">
<div class="vote-buttons">
- <img id="answer-img-upvote-{{ answer.id }}" class="answer-img-upvote" src="/content/images/vote-arrow-up{% get_user_vote_image user_answer_votes answer.id 1 %}.png" title="这篇帖子有价值(再次点击取消操作)" >
- <div id="answer-vote-number-{{ answer.id }}" class="vote-number" title="当前总票数">
+ <img id="answer-img-upvote-{{ answer.id }}" class="answer-img-upvote" src="/content/images/vote-arrow-up{% get_user_vote_image user_answer_votes answer.id 1 %}.png" title="{% trans "i like this answer (click again to cancel)" %}">
+ <div id="answer-vote-number-{{ answer.id }}" class="vote-number" title="{% trans "current number of votes" %}">
{{ answer.score }}
</div>
- <img id="answer-img-downvote-{{ answer.id }}" class="answer-img-downvote" src="/content/images/vote-arrow-down{% get_user_vote_image user_answer_votes answer.id -1 %}.png" title="这篇帖子没有价值(再次点击取消操作)" >
+ <img id="answer-img-downvote-{{ answer.id }}" class="answer-img-downvote"
+ src="/content/images/vote-arrow-down{% get_user_vote_image user_answer_votes answer.id -1 %}.png"
+ title="{% trans "i dont like this answer (click again to cancel)" %}" >
<br><br>
{% ifequal request.user question.author %}
- <img id="answer-img-accept-{{ answer.id }}" class="answer-img-accept" src="/content/images/vote-accepted{% if answer.accepted %}-on{% endif %}.png" title="最佳答案(再次点击取消操作)" >
+ <img id="answer-img-accept-{{ answer.id }}" class="answer-img-accept"
+ src="/content/images/vote-accepted{% if answer.accepted %}-on{% endif %}.png"
+ title="{% trans "mark this answer as favorite (click again to undo)" %}" >
{% else %}
{% if answer.accepted %}
- <img id="answer-img-accept-{{ answer.id }}" class="answer-img-accept" src="/content/images/vote-accepted{% if answer.accepted %}-on{% endif %}.png" title="这个答案已经被提问作者标记为最佳答案" >
+ <img id="answer-img-accept-{{ answer.id }}" class="answer-img-accept"
+ src="/content/images/vote-accepted{% if answer.accepted %}-on{% endif %}.png"
+ title="{% trans "the author of the question has selected this answer as correct" %}" >
{% endif %}
{% endifequal %}
</div>
@@ -272,32 +299,43 @@
<div class="answer-controls" style="clear:both;">
<table width="100%">
<tr>
- <td width="210px" style="vertical-align:top">
+ <td width="400px" style="vertical-align:top">
{% if request.user|can_edit_post:answer %}
- <span class="action-link"><a href="{% url edit_answer answer.id %}">编辑</a></span>
+ <span class="action-link"><a href="{% url edit_answer answer.id %}">{% trans "edit" %}</a></span>
<span class="action-link-separator">|</span>
{% endif %}
{% if request.user|can_delete_post:answer %}
- <span class="action-link"><a id="answer-delete-link-{{answer.id}}">删除</a></span>
+ <span class="action-link">
+ <a id="answer-delete-link-{{answer.id}}">
+ {% if answer.deleted %}
+ {% trans "undelete" %}
+ {% endif %}
+ {% if not answer.deleted %}
+ {% trans "delete" %}
+ {% endif %}
+ </a>
+ </span>
<span class="action-link-separator">|</span>
{% endif %}
<span class="linksopt">
- <a href="#{{ answer.id }}" title="该回答的链接地址">
- 永久链接
+ <a href="#{{ answer.id }}" title="{% trans "answer permanent link" %}">
+ {% trans "permanent link" %}
</a>
</span>
<span class="action-link-separator">|</span>
- <span id="answer-offensive-flag-{{ answer.id }}" class="offensive-flag" title="检举该帖为垃“水帖”(含广告、人身攻击、恶意言论等)"><a>垃圾帖?</a><span class="darkred">{% if request.user|can_view_offensive_flags %}{% if answer.offensive_flag_count %}({{ answer.offensive_flag_count }}){% endif %}{% endif %}</span></span>
+ <span id="answer-offensive-flag-{{ answer.id }}" class="offensive-flag"
+ title="{% trans "report as offensive (i.e containing spam, advertising, malicious text, etc.)" %}">
+ <a>{% trans "flag offensive" %}</a>
+ <span class="darkred">{% if request.user|can_view_offensive_flags %}{% if answer.offensive_flag_count %}({{ answer.offensive_flag_count }}){% endif %}{% endif %}</span></span>
</td>
- <td width="210px" style="vertical-align:top">
+ <td width="110px" style="vertical-align:top">
{% if answer.last_edited_by %}
<div class="question-edit" >
<table width="200px" >
<tr>
<td colspan="2">
- 更新于<a href="{% url answer_revisions answer.id %}"><strong title="{{answer.last_edited_at }}">{% diff_date answer.last_edited_at %}</strong></a>
+ {% trans "updated" %}<a href="{% url answer_revisions answer.id %}"><strong title="{{answer.last_edited_at }}">{% diff_date answer.last_edited_at %}</strong></a>
</td>
-
</tr>
{% if answer.wiki %}
<tr>
@@ -336,16 +374,15 @@
</td>
<td style="vertical-align:top">
{% if answer.wiki %}
- <span class="wiki-category">社区Wiki</span>
+ <span class="wiki-category">{% trans "community wiki" %}</span>
<div style="margin-bottom:10px"></div>
{% else %}
<div class="answer-mark">
<table width="200px">
<tr>
- <td colspan="2">
- 回答于<strong title="{{answer.added_at}}">{% diff_date answer.added_at %}</strong>
+ <td colspan="2">
+ {% trans "asked" %} <strong title="{{answer.added_at}}">{% diff_date answer.added_at %}</strong>
</td>
-
</tr>
<tr>
<td width="40px" style="vertical-align:bottom">
@@ -370,7 +407,9 @@
</div>
<div id="comment-{{ answer.id }}" class="post-comments" >
<input id="can-post-comments-answer-{{answer.id}}" type="hidden" value="{{ request.user|can_add_comments }}"/>
- <a id="comments-link-answer-{{answer.id}}" class="comments-link">{% if answer.comment_count %}评论 <strong>({{answer.comment_count}})</strong>{% else %}添加评论{% endif %}</a>
+ <a id="comments-link-answer-{{answer.id}}" class="comments-link">
+ {% if answer.comment_count %}{% trans "comments" %}
+ <strong>({{answer.comment_count}})</strong>{% else %}{% trans "add comment" %}{% endif %}</a>
<div id="comments-answer-{{answer.id}}" class="comments-container">
<div class="comments"/></div>
</div>
@@ -394,7 +433,7 @@
{% if not question.closed %}
{% if request.user.is_authenticated %}
<div style="padding:10px 0 0 0;">
- <div class="headNormal">您的回答:</div>
+ <div class="headNormal">{% trans "Your answer" %}:</div>
</div>
<div id="description" class="" >
@@ -404,7 +443,8 @@
<table width="100%">
<tr>
<td>
- <span id="pre-collapse" title="打开或者关闭Markdown编辑器的实时预览">预览开关</span>
+ <span id="pre-collapse"
+ title="{% trans "Toggle the real time Markdown editor preview" %}">{% trans "toggle preview" %}</span>
</td>
<td style="text-align:right;">
{{ answer.wiki }} <span style="font-weight:normal;cursor:help" title="{{answer.wiki.help_text}}">{{ answer.wiki.label_tag }} </span>
@@ -415,12 +455,11 @@
</div>
<div id="previewer" class="wmd-preview"></div>
{{ answer.text.errors }}
-
</div>
<br>
- <input type="submit" value="回答该问题" class="submit"><span class="form-error"></span>
+ <input type="submit" value="{% trans "Answer the question" %}" class="submit"><span class="form-error"></span>
{% else %}
- <input id="btLogin" type="button" class="submit" style="width:200px" value="登录并回答该问题">
+ <input id="btLogin" type="button" class="submit" style="width:200px" value="{% trans "Login to answer" %}">
{% endif %}
{% endif %}
<br><br>
@@ -432,26 +471,28 @@
{% block sidebar %}
<div class="boxC">
<p>
- 您正在浏览的问题含有以下标签:
+ {% trans "Question tags" %}:
</p>
<p class="tags" >
{% for tag in tags %}
- <a href="{% url forum.views.tag tag.name|urlencode %}" title="查看有关'{{ tag.name }}'的问题" rel="tag">{{ tag.name }}</a> <span class="tag-number">× {{ tag.used_count|intcomma }}</span><br>
+ <a href="{% url forum.views.tag tag.name|urlencode %}"
+ title="{% trans "see questions tagged"%}'{{tag.name}}'{% trans "using tags" %}"
+ rel="tag">{{ tag.name }}</a> <span class="tag-number">× {{ tag.used_count|intcomma }}</span><br>
{% endfor %}
</p>
<p>
- 提问时间: <br><strong title="{{ question.added_at }}">{{ question.added_at|timesince }}前</strong>
+ {% trans "question asked" %}: <strong title="{{ question.added_at }}">{{ question.added_at|timesince }} {% trans "ago" %}</strong>
</p>
<p>
- 目前浏览数量:<br><strong>{{ question.view_count|intcomma }} 次</strong>
+ {% trans "question was seen" %}: <strong>{{ question.view_count|intcomma }} {% trans "times" %}</strong>
</p>
<p>
- 最后更新时间:<br><strong title="{{ question.last_activity_at }}">{{ question.last_activity_at|timesince }}前</strong>
+ {% trans "last updated" %}: <strong title="{{ question.last_activity_at }}">{{ question.last_activity_at|timesince }} {% trans "ago" %}</strong>
</p>
</div>
<div class="boxC">
- <h3 class="subtitle">相似的问题</h3>
+ <h3 class="subtitle">{% trans "Related questions" %}</h3>
<div class="questions-related">
{% for question in similar_questions %}
<p>
@@ -466,4 +507,4 @@
{% block endjs %}
{% endblock %}
-
+<!-- end question.html -->
diff --git a/templates/question_edit.html b/templates/question_edit.html
index 2cec358f..6fe8bb41 100644
--- a/templates/question_edit.html
+++ b/templates/question_edit.html
@@ -1,14 +1,16 @@
+<!-- question_edit.html -->
{% extends "base.html" %}
-{% block title %}{% spaceless %}修改问题{% endspaceless %}{% endblock %}
+{% load i18n %}
+{% block title %}{% spaceless %}{% trans "Edit question" %}{% endspaceless %}{% endblock %}
{% block forejs %}
<script type='text/javascript' src='/content/js/com.cnprog.editor.js'></script>
<script type='text/javascript' src='/content/js/com.cnprog.post.js'></script>
<script type='text/javascript' src='/content/js/jquery.validate.pack.js'></script>
- <script type='text/javascript' src='/content/js/wmd/showdown-min.js'></script>
- <script type='text/javascript' src='/content/js/wmd/wmd-min.js'></script>
+ <script type='text/javascript' src='/content/js/wmd/showdown.js'></script>
+ <script type='text/javascript' src='/content/js/wmd/wmd.js'></script>
<link rel="stylesheet" type="text/css" href="/content/js/wmd/wmd.css" />
<script type="text/javascript">
-
+ //todo move javascript out
$().ready(function(){
$("#nav_questions").attr('className',"on");
$('#editor').TextAreaResizer();
@@ -19,10 +21,10 @@
//toggle preview of editor
var display = true;
- var txt = "禁用预览";
+ var txt = "[{% trans "hide preview"}%]";
$('#pre-collapse').text(txt);
$('#pre-collapse').bind('click', function(){
- txt = display ? "启用预览" : "禁用预览";
+ txt = display ? "[{% trans "show preview" %}]" : "[{% trans "hide preview" %}]";
display = !display;
$('#previewer').toggle();
$('#pre-collapse').text(txt);
@@ -60,15 +62,16 @@
{% block content %}
<div id="main-bar" class="headNormal">
- 修改问题 [<a href="{{ question.get_absolute_url }}">返回</a>]
+ {% trans "Edit question" %} [<a href="{{ question.get_absolute_url }}">{% trans "back" %}</a>]
</div>
<div id="main-body" class="ask-body">
<div id="askform">
<form id="fmedit" action="{% url edit_question question.id %}" method="post" >
- <label for="id_revision" ><strong>版本:</strong></label> <br>
+ <label for="id_revision" ><strong>{% trans "revision" %}:</strong></label> <br>
{% if revision_form.revision.errors %}{{ revision_form.revision.errors.as_ul }}{% endif %}
<div style="vertical-align:middle">
- {{ revision_form.revision }} <input type="submit" style="display:none" id="select_revision" name="select_revision" value="选择版本">
+ {{ revision_form.revision }} <input type="submit" style="display:none" id="select_revision" name="select_revision"
+ value="{% trans "select revision"%}">
</div><br>
<div class="form-item">
<label for="id_title" ><strong>{{ form.title.label_tag }}:</strong></label> <span class="form-error"></span><br>
@@ -85,7 +88,7 @@
<table width="100%">
<tr>
<td>
- <span id="pre-collapse" title="打开或者关闭Markdown编辑器的实时预览">预览开关</span>
+ <span id="pre-collapse" title="{% trans "Toggle the real time Markdown editor preview" %}">{% trans "toggle preview" %}</span>
</td>
<td style="text-align:right;">
{{ form.wiki }} <span style="color:#000;cursor:help" title="{{form.wiki.help_text}}">{{ form.wiki.label_tag }} </span>
@@ -113,8 +116,8 @@
<br>
<div class="error" ></div>
- <input type="submit" value="现在修改" class="submit" />
- <input type="button" value="取消" class="submit" onclick="history.back(-1);" />
+ <input type="submit" value="{% trans "Save edit" %}" class="submit" />
+ <input type="button" value="{% trans "Cancel" %}" class="submit" onclick="history.back(-1);" />
<br>
<br>
</form>
@@ -123,63 +126,9 @@
{% endblock %}
{% block sidebar %}
-<div class="boxC">
- <p class="subtitle darkred">受欢迎的提问</p>
- <div>
- <ul class="list-item">
- <li>
- <b>您的问题与编程相关吗?</b>
- </li>
- <li>
- 建议您提的问题是可以被答复的,而不仅仅是可以讨论。
- </li>
- <li>
- 请详细描述您的问题。
- </li>
- <li>
- 我们推荐您使用中文描述问题,这样可以得到更多的答复机会。
- </li>
- </ul>
- <a href="/faq/" target="_blank" title="查看常见问题" style="float:right;position:relative">faq »</a>
- <br>
- </div>
-</div>
-
-<div class="boxC">
- <p class="subtitle">Markdown快速参考</p>
- <ul class="list-item">
- <li>
- *斜体* 或者 _斜体_
-
- </li>
- <li>
- **加粗** 或者 __加粗__
-
- </li>
- <li>
- <b>链接</b>:一个[例子](http://url.com/ "标题")
-
- </li>
-
- <li>
- <b>图片</b>:![alt 文本](/path/img.jpg "标题")
-
- </li>
- <li>
- 列表:
- 1. Foo
- 2. Bar
- </li>
- <li>
- 基本的HTML标签也是支持的
- </li>
- </ul>
- <a href="http://en.wikipedia.org/wiki/Markdown" target="_blank" style="float:right;position:relative">有关Markdown详细说明 »</a>
- <br>
-</div>
-
+{% include "question_edit_tips.html" %}
{% endblock %}
{% block endjs %}
{% endblock %}
-
+<!-- end question_edit.html -->
diff --git a/templates/question_edit_tips.html b/templates/question_edit_tips.html
new file mode 100644
index 00000000..4ac666a6
--- /dev/null
+++ b/templates/question_edit_tips.html
@@ -0,0 +1,51 @@
+<!-- question_edit_tips.html -->
+{% load i18n %}
+<div class="boxC">
+ <p class="subtitle darkred">{% trans "question tips" %}</p>
+ <div>
+ <ul class="list-item">
+ <li> <b>{% trans "please ask a relevant question" %}</b>
+ </li>
+ <li>
+ {% trans "please try provide enough details" %}
+ </li>
+ <li>
+ {% trans "be clear and concise" %}
+ </li>
+ </ul>
+ <a href="/faq/" target="_blank" title="{% trans "see frequently asked questions" %}" style="float:right;position:relative">faq »</a>
+ <br>
+ </div>
+</div>
+
+<div class="boxC">
+ <p class="subtitle">{% trans "Markdown tips" %}</p>
+ <ul class="list-item">
+ <li>
+ {% trans "*italic* or __italic__" %}
+ </li>
+ <li>
+ {% trans "**bold** or __bold__" %}
+ </li>
+ <li>
+ <b>{% trans "link" %}</b>:[{% trans "text" %}](http://url.com/ "{% trans "title" %}")
+
+ </li>
+
+ <li>
+ <b>{% trans "image" %}</b>:![alt {% trans "text" %}](/path/img.jpg "{% trans "title" %}")
+
+ </li>
+ <li>
+ {% trans "numbered list:" %}
+ 1. Foo
+ 2. Bar
+ </li>
+ <li>
+ {% trans "basic HTML tags are also supported" %}
+ </li>
+ </ul>
+ <a href="http://en.wikipedia.org/wiki/Markdown" target="_blank" style="float:right;position:relative">{% trans "learn more about Markdown" %} »</a>
+ <br>
+</div>
+<!-- end question_edit_tips.html -->
diff --git a/templates/reopen.html b/templates/reopen.html
index 9d87c3a6..7ab59421 100644
--- a/templates/reopen.html
+++ b/templates/reopen.html
@@ -1,7 +1,9 @@
+<!-- reopen.html -->
{% extends "base_content.html" %}
{% load extra_tags %}
+{% load i18n %}
{% load humanize %}
-{% block title %}{% spaceless %}重设问题{% endspaceless %}{% endblock %}
+{% block title %}{% spaceless %}{% trans "Reopen question" %}{% endspaceless %}{% endblock %}
{% block forejs %}
<script type="text/javascript">
$().ready(function(){
@@ -11,21 +13,21 @@
{% endblock %}
{% block content %}
<div id="main-bar" class="headNormal">
- 重设问题
+ {% trans "Reopen question" %}
</div>
<div id="main-body" style="width:100%">
- <p>你将打开这个已经被关闭的问题: <a href="{{ question.get_absolute_url }}"><span class="big">{{ question.get_question_title }}</span></a>
+ <p>{% trans "Open the previously closed question" %}: <a href="{{ question.get_absolute_url }}"><span class="big">{{ question.get_question_title }}</span></a>
</p>
- <p><strong>问题曾以“{{ question.get_close_reason_display }}”的原因被 <a href="{{ question.closed_by.get_profile_url }}">{{ question.closed_by.username }}</a> 于{% diff_date question.closed_at %}<font class="darkred">关闭</font>
+ <p><strong>{% trans "The question was closed for the following reason " %}"{{ question.get_close_reason_display }}"{% trans "reason - leave blank in english" %} <a href="{{ question.closed_by.get_profile_url }}">{{ question.closed_by.username }}</a> {% trans "on "%} {% diff_date question.closed_at %}<font class="darkred">{% trans "date closed" %}</font>
</strong>
</p>
<form id="fmclose" action="{% url reopen question.id %}" method="post" >
<div id="" style="padding:20px 0 20px 0">
- <input type="submit" value="确定打开这个问题" class="submit" />
- <input id="btBack" type="button" value="取消" class="submit" />
+ <input type="submit" value="{% trans "Reopen this question" %}" class="submit" />
+ <input id="btBack" type="button" value="{% trans "Cancel" %}" class="submit" />
</div>
@@ -35,3 +37,4 @@
+<!-- end reopen.html -->
diff --git a/templates/revisions_answer.html b/templates/revisions_answer.html
index ece59d6e..5ab12fbf 100644
--- a/templates/revisions_answer.html
+++ b/templates/revisions_answer.html
@@ -1,13 +1,15 @@
+<!-- revisions_answer.html -->
{% extends "base_content.html" %}
+{% load i18n %}
{% load extra_tags %}
{% load extra_filters %}
{% load humanize %}
-{% block title %}{% spaceless %}版本历史{% endspaceless %}{% endblock %}
+{% block title %}{% spaceless %}{% trans "Revision history" %}{% endspaceless %}{% endblock %}
{% block forejs %}
<script type='text/javascript' src='/content/js/com.cnprog.editor.js'></script>
<script type='text/javascript' src='/content/js/com.cnprog.post.js'></script>
<script type="text/javascript">
-
+ //todo - take this out into .js file
$().ready(function(){
$("#nav_questions").attr('className',"on");
$('div.revision div[id^=rev-header-]').bind('click', function(){
@@ -31,7 +33,7 @@
{% block content %}
<div id="main-bar" class="headNormal">
- 版本历史 [<a href="{{ post.get_absolute_url }}">返回</a>]
+ {% trans "Revision history" %} [<a href="{{ post.get_absolute_url }}">{% trans "back" %}</a>]
</div>
<div id="main-body" class="">
<div id="revisions">
@@ -42,13 +44,13 @@
<table width="100%">
<tr>
<td width="20" style="vertical-align:middle"><img id="rev-arrow-{{ revision.revision }}" src="/content/images/expander-arrow-show.gif"></td>
- <td width="30px" style="vertical-align:middle"><span class="revision-number" title="版本 {{ revision.revision }}">{{ revision.revision }}</span></td>
+ <td width="30px" style="vertical-align:middle"><span class="revision-number" title="{% trans "revision" %} {{ revision.revision }}">{{ revision.revision }}</span></td>
<td width="200px" style="vertical-align:middle">
{% if revision.summary %}
<div class="summary"><span>{{ revision.summary }}<span></div>
{% endif %}
{% if request.user|can_edit_post:post %}
- <a href="{% url edit_answer post.id %}?revision={{ revision.revision }}">编辑</a>
+ <a href="{% url edit_answer post.id %}?revision={{ revision.revision }}">{% trans "edit" %}</a>
{% endif %}
</td>
@@ -58,9 +60,9 @@
<tr >
<td colspan="2" style="padding:3px 0 3px 0">
{% ifequal revision.revision 1 %}
- 提问于<strong title="{{ post.added_at }}">{% diff_date post.added_at %}</strong>
+ {% trans "asked" %} <strong title="{{ post.added_at }}">{% diff_date post.added_at %}</strong>
{% else %}
- 更新于<strong title="{{ post.last_edited_at }}">{% diff_date revision.revised_at %}</strong>
+ {% trans "updated" %} <strong title="{{ post.last_edited_at }}">{% diff_date revision.revised_at %}</strong>
{% endifequal %}
</td>
@@ -97,4 +99,4 @@
{% block endjs %}
{% endblock %}
-
+<!-- end revisions_answer.html -->
diff --git a/templates/revisions_question.html b/templates/revisions_question.html
index 94fb2644..77a421bb 100644
--- a/templates/revisions_question.html
+++ b/templates/revisions_question.html
@@ -1,13 +1,16 @@
+<!-- revisions_question.html -->
{% extends "base_content.html" %}
+<!--somehow very similar to revisions_answer.html-->
{% load extra_tags %}
+{% load i18n %}
{% load extra_filters %}
{% load humanize %}
-{% block title %}{% spaceless %}版本历史{% endspaceless %}{% endblock %}
+{% block title %}{% spaceless %}{% trans "Revision history" %}{% endspaceless %}{% endblock %}
{% block forejs %}
<script type='text/javascript' src='/content/js/com.cnprog.editor.js'></script>
<script type='text/javascript' src='/content/js/com.cnprog.post.js'></script>
<script type="text/javascript">
-
+ //todo - take this out into .js file
$().ready(function(){
$("#nav_questions").attr('className',"on");
$('div.revision div[id^=rev-header-]').bind('click', function(){
@@ -15,8 +18,6 @@
toggleRev(revId);
});
-
-
lanai.highlightSyntax();
});
@@ -27,13 +28,12 @@
arrow.attr("src", "/content/images/expander-arrow-" + (visible ? "show" : "hide") + ".gif");
$("#rev-body-" + id).slideToggle("fast");
}
-
</script>
{% endblock %}
{% block content %}
<div id="main-bar" class="headNormal">
- 版本历史 [<a href="{{ post.get_absolute_url }}">返回</a>]
+ {% trans "Revision history" %}[<a href="{{ post.get_absolute_url }}">{% trans "back" %}</a>]
</div>
<div id="main-body" class="">
<div id="revisions">
@@ -44,13 +44,13 @@
<table width="100%">
<tr>
<td width="20" style="vertical-align:middle"><img id="rev-arrow-{{ revision.revision }}" src="/content/images/expander-arrow-show.gif"></td>
- <td width="30px" style="vertical-align:middle"><span class="revision-number" title="版本 {{ revision.revision }}">{{ revision.revision }}</span></td>
+ <td width="30px" style="vertical-align:middle"><span class="revision-number" title="{% trans "revision" %} {{ revision.revision }}">{{ revision.revision }}</span></td>
<td width="200px" style="vertical-align:middle">
{% if revision.summary %}
<div class="summary"><span>{{ revision.summary }}<span></div>
{% endif %}
{% if request.user|can_edit_post:post %}
- <a href="{% url edit_question post.id %}?revision={{ revision.revision }}">编辑</a>
+ <a href="{% url edit_question post.id %}?revision={{ revision.revision }}">{% trans "edit" %}</a>
{% endif %}
</td>
@@ -60,9 +60,9 @@
<tr >
<td colspan="2" style="padding:3px 0 3px 0">
{% ifequal revision.revision 1 %}
- 提问于<strong title="{{ post.added_at }}">{% diff_date post.added_at %}</strong>
+ {% trans "asked" %}<strong title="{{ post.added_at }}">{% diff_date post.added_at %}</strong>
{% else %}
- 更新于<strong title="{{ post.last_edited_at }}">{% diff_date revision.revised_at %}</strong>
+ {% trans "updated" %}<strong title="{{ post.last_edited_at }}">{% diff_date revision.revised_at %}</strong>
{% endifequal %}
</td>
@@ -100,3 +100,4 @@
{% block endjs %}
{% endblock %}
+<!-- end revisions_question.html -->
diff --git a/templates/tags.html b/templates/tags.html
index 0d2a972e..6131e527 100644
--- a/templates/tags.html
+++ b/templates/tags.html
@@ -1,7 +1,8 @@
{% extends "base_content.html" %}
+{% load i18n %}
{% load extra_tags %}
{% load humanize %}
-{% block title %}{% spaceless %}标签列表{% endspaceless %}{% endblock %}
+{% block title %}{% spaceless %}{% trans "Tag list" %}{% endspaceless %}{% endblock %}
{% block forejs %}
<script type="text/javascript">
$().ready(function(){
@@ -24,25 +25,25 @@
{% block content %}
<!-- Tabs -->
<div class="tabBar">
- <div class="headQuestions">标签列表</div>
+ <div class="headQuestions">{% trans "Tag list" %}</div>
<div class="tabsA">
- <a id="sort_name" href="/tags/?sort=name" class="off" title="按名称的字母先后顺序排序">按名称排序</a>
- <a id="sort_used" href="/tags/?sort=used" class="off" title="按标签被使用的次数排序">按流行程度排序</a>
+ <a id="sort_name" href="/tags/?sort=name" class="off" title="{% trans "sorted alphabetically" %}">{% trans "by name" %}</a>
+ <a id="sort_used" href="/tags/?sort=used" class="off" title="{% trans "sorted by frequency of tag use" %}">{% trans "by popularity" %}</a>
</div>
</div>
<div id="searchtags">
<p>
{% if stag %}
- 匹配查询 '<span class="darkred"><strong>{{ stag }}</strong></span>' 的所有标签:
+ {% trans "All tags matching query" %} '<span class="darkred"><strong>{{ stag }}</strong></span>' {% trans "all tags - make this empty in english" %}:
{% endif %}
{% if not tags.object_list %}
- <span >没有找到相关数据。</span>
+ <span>{% trans "Nothing found" %}</span>
{% endif %}
</p>
<ul class="tagsList tags">
{% for tag in tags.object_list %}
<li>
- <a href="{% url forum.views.tag tag|urlencode %}" title="查看有关'{{ tag }}'的问题" rel="tag">
+ <a href="{% url forum.views.tag tag|urlencode %}" title="{% trans "see questions tagged" %}'{{ tag }}'{% trans "using tags" %}" rel="tag">
{{ tag }}
</a>&nbsp;
<span class="tag-number">× {{ tag.used_count|intcomma }}</span>
@@ -58,4 +59,5 @@
<div class="pager">
{% cnprog_paginator context %}
</div>
-{% endblock %} \ No newline at end of file
+{% endblock %}
+<!-- end tags.html -->
diff --git a/templates/unanswered.html b/templates/unanswered.html
index 4012921a..926f2ffd 100644
--- a/templates/unanswered.html
+++ b/templates/unanswered.html
@@ -1,8 +1,10 @@
+<!-- unanswered.html -->
{% extends "base.html" %}
{% load extra_tags %}
+{% load i18n %}
{% load humanize %}
{% load extra_filters %}
-{% block title %}{% spaceless %}没有回答的问题{% endspaceless %}{% endblock %}
+{% block title %}{% spaceless %}{% trans "Unanswered questions" %}{% endspaceless %}{% endblock %}
{% block forejs %}
<script type="text/javascript">
$().ready(function(){
@@ -13,9 +15,9 @@
{% endblock %}
{% block content %}
<div class="tabBar">
- <span class="headQuestions">没有回答的问题</span>
+ <span class="headQuestions">{% trans "Unanswered questions" %}</span>
<div class="tabsA">
- <a id="latest" href="?sort=latest" class="on" title="最新加入系统的问题">最新问题</a>
+ <a id="latest" href="?sort=latest" class="on" title="{% trans "most recently asked questions" %}">{% trans "newest" %}</a>
</div>
</div>
@@ -31,9 +33,9 @@
<td><span class="num">{{ question.view_count|cnprog_intword|safe }}</span> </td>
</tr>
<tr>
- <td><span class="unit">回答</span></td>
- <td><span class="unit">票数</span></td>
- <td><span class="unit">浏览</span></td>
+ <td><span class="unit">{% trans "answers" %}</span></td>
+ <td><span class="unit">{% trans "votes" %}</span></td>
+ <td><span class="unit">{% trans "views" %}</span></td>
</tr>
</table>
</div>
@@ -43,7 +45,7 @@
{% ifequal tab_id 'active'%}
{% if question.wiki %}
- <span class="from wiki">社区Wiki</span>
+ <span class="from wiki">{% trans "community wiki" %}</span>
<span class="date" title="{{ question.added_at }}">{% diff_date question.added_at %}</span>
{% else %}
<div class="from">
@@ -55,7 +57,7 @@
{% endif %}
{% else %}
{% if question.wiki %}
- <span class="from wiki">社区Wiki</span>
+ <span class="from wiki">{% trans "community wiki" %}</span>
<span class="date" title="{{ question.added_at }}">{% diff_date question.added_at %}</span>
{% else %}
<div class="from">
@@ -68,9 +70,12 @@
{% endifequal %}
<div class="tags">
- {% for tag in question.tagname_list %}
- <a href="{% url forum.views.tag tag|urlencode %}" title="查看有关'{{ tag }}'的问题" rel="tag">{{ tag }}</a>
- {% endfor %}
+ {% for tag in question.tagname_list %}
+ <a href="{% url forum.views.tag tag|urlencode %}"
+ title="{% trans "see questions tagged" %}'{{ tag }}'{% trans "using tags" %}"
+ rel="tag">{{ tag }}
+ </a>
+ {% endfor %}
</div>
</div>
{% endfor %}
@@ -78,31 +83,30 @@
{% endblock %}
{% block tail %}
- <div class="pager">
- {% cnprog_paginator context %}
-
- </div>
- <div class="pagesize">
- {% cnprog_pagesize context %}
- </div>
+ <div class="pager">
+ {% cnprog_paginator context %}
+ </div>
+ <div class="pagesize">
+ {% cnprog_pagesize context %}
+ </div>
{% endblock %}
{% block sidebar %}
<div class="boxC">
<p>
- 您正在浏览所有<br><div class="questions-count">{{ questions_count|intcomma }}</div>
- <p>个<span class="darkred"><strong> 没有回答的 </strong></span>问题。</p>
-
- <p>问题按 <strong>问题创建时间</strong> 排序。最新加入的问题将显示在最前面。</p>
-
+ {% blocktrans with questions_count|intcomma as num_q %}have {{num_q}} unanswered questions{% endblocktrans %}
+ {% comment %}
+ {% trans "Have a total of" %}<br><div class="questions-count">{{ questions_count|intcomma }}</div>
+ {% endcomment %}
+ <!---<p>问题按 <strong>问题创建时间</strong> 排序。最新加入的问题将显示在最前面。</p>-->
</p>
</div>
<div class="boxC">
- <h3 class="subtitle">相关标签</h3>
+ <h3 class="subtitle">{% trans "Related tags" %}</h3>
<div class="body">
<div class="tags">
{% for tag in tags %}
- <a rel="tag" title="查看有关'{{ tag.name }}'的问题" href="{% url forum.views.tag tag.name|urlencode %}">{{ tag.name }}</a>
+ <a rel="tag" title="{% trans "see questions tagged"%}'{{ tag.name }}'{% trans "using tags" %}" href="{% url forum.views.tag tag.name|urlencode %}">{{ tag.name }}</a>
<span class="tag-number">× {{ tag.used_count|intcomma }}</span>
<br>
{% endfor %}
@@ -113,3 +117,4 @@
{% endblock %}
+<!-- end unanswered.html -->
diff --git a/templates/user.html b/templates/user.html
index dd8e3b13..53a30dc0 100644
--- a/templates/user.html
+++ b/templates/user.html
@@ -1,3 +1,4 @@
+<!-- user.html -->
{% extends "base_content.html" %}
{% load extra_tags %}
{% load humanize %}
@@ -31,4 +32,4 @@
{% endblock %}
{% include "user_footer.html" %}
</div>
-{% endblock %} \ No newline at end of file
+{% endblock %}<!-- end user.html -->
diff --git a/templates/user_edit.html b/templates/user_edit.html
index 18794472..0f927374 100644
--- a/templates/user_edit.html
+++ b/templates/user_edit.html
@@ -1,7 +1,9 @@
+<!-- user_edit.html -->
{% extends "base_content.html" %}
{% load extra_tags %}
{% load humanize %}
-{% block title %}{% spaceless %}修改个人资料{% endspaceless %}{% endblock %}
+{% load i18n %}
+{% block title %}{% spaceless %}{% trans "Edit user profile" %}{% endspaceless %}{% endblock %}
{% block forejs %}
<script type="text/javascript">
$().ready(function(){
@@ -14,7 +16,7 @@
{% endblock %}
{% block content %}
<div id="main-bar" class="headNormal">
- {{ request.user.username }} - 修改资料
+ {{ request.user.username }} - {% trans "edit profile" %}
</div>
<div id="main-body" style="width:100%;padding-top:10px">
<form name="" action="{% url edit_user request.user.id %}" method="post">
@@ -25,12 +27,13 @@
<img src="/content/images/nophoto.png">
{% endif %}
<div style="padding:20px 0 0 20px;font-weight:bold;font-size:150%">
- <a href="http://www.gravatar.com/" target="_blank" title="gravatar和您的邮件地址是绑定的">修改头像</a>
+ <a href="http://www.gravatar.com/" target="_blank"
+ title="gravatar {% trans "image associated with your email address" %}">{% trans "avatar" %}</a>
</div>
</div>
<div id="askform" style="float:right;width:750px;text-align:left;">
- <h2>注册用户</h2>
+ <h2>{% trans "Registered user" %}</h2>
<table class="user-details">
<tr>
<th width="100px"></th>
@@ -76,8 +79,8 @@
</table>
<div style="margin:30px 0 60px 0">
- <input type="submit" value="更新" class="submit" >
- <input id="cancel" type="button" value="取消" class="submit" >
+ <input type="submit" value="{% trans "Update" %}" class="submit" >
+ <input id="cancel" type="button" value="{% trans "Cancel" %}" class="submit" >
</div>
</div>
@@ -85,6 +88,4 @@
</div>
{% endblock %}
-
-
-
+<!-- end user_edit.html -->
diff --git a/templates/user_favorites.html b/templates/user_favorites.html
index 8cebc798..d47670bd 100644
--- a/templates/user_favorites.html
+++ b/templates/user_favorites.html
@@ -1,7 +1,9 @@
+<!-- user_favorites.html -->
{% extends "user.html" %}
{% load extra_tags %}
{% load humanize %}
{% block usercontent %}
{% include "users_questions.html" %}
-{% endblock %} \ No newline at end of file
+{% endblock %}
+<!-- end user_favorites.html -->
diff --git a/templates/user_footer.html b/templates/user_footer.html
index 3deba20a..ee347742 100644
--- a/templates/user_footer.html
+++ b/templates/user_footer.html
@@ -1,3 +1,4 @@
+<!-- user_footer.html -->
<div id="mainbar-footer">
-</div> \ No newline at end of file
+</div><!-- end user_footer.html -->
diff --git a/templates/user_info.html b/templates/user_info.html
index 1700fda8..8e6dca84 100644
--- a/templates/user_info.html
+++ b/templates/user_info.html
@@ -1,6 +1,8 @@
+<!-- user_info.html -->
{% load extra_tags %}
{% load extra_filters %}
{% load humanize %}
+{% load i18n %}
<div id="subheader" class="headUser">
{{view_user.username}}
@@ -18,7 +20,7 @@
<tr>
<td align="center">
<div class="scoreNumber">{{view_user.reputation|intcomma}}</div>
- <p><b style="color:#777;">积分</b></p>
+ <p><b style="color:#777;">{% trans "reputation" %}</b></p>
</td>
</tr>
</table>
@@ -26,51 +28,52 @@
<td width="360" style="vertical-align: top;">
<table class="user-details">
<tr height="30px">
- <th width="130" align="left"><strong>注册用户</strong></th>
+ <th width="130" align="left"><strong>{% trans "Registered user" %}</strong></th>
<th width="230" align="right">
{% if request.user|can_view_user_edit:view_user %}
- <span class="user-edit-link"><a href="/users/{{ view_user.id }}/edit/">更新我的资料</a></span>
+ <span class="user-edit-link"><a href="/users/{{ view_user.id }}/edit/">{% trans "update profile" %}</a></span>
{% endif %}
</th>
</tr>
{% if view_user.real_name %}
<tr>
- <td >姓名</td>
- <td ><b>{{view_user.real_name}}</b></td>
+ <td>{% trans "real name" %}</td>
+ <td><b>{{view_user.real_name}}</b></td>
</tr>
{% endif %}
<tr>
- <td>已加入</td>
+ <td>{% trans "member for" %}</td>
<td>{{ view_user.date_joined|timesince }}</td>
</tr>
{% if view_user.last_seen %}
<tr>
- <td>上次活动时间</td>
- <td><strong title="{{ view_user.last_seen }}">{{ view_user.last_seen|timesince }}前</strong></td>
+ <td>{% trans "last seen" %}</td>
+ <td><strong title="{{ view_user.last_seen }}">{{ view_user.last_seen|timesince }} {% trans "ago" %}</strong></td>
</tr>
{% endif %}
{% if view_user.website %}
<tr>
- <td>个人网站</td>
+ <td>{% trans "user website" %}</td>
<td><a rel="nofollow" target="_blank" href="{{view_user.website}}">{{view_user.website}}</a></td>
</tr>
{% endif %}
{% if view_user.location %}
<tr>
- <td>城市</td>
+ <td>{% trans "location" %}</td>
<td>{{view_user.location}}</td>
</tr>
{% endif %}
{% if view_user.date_of_birth%}
<tr>
- <td>年龄</td>
- <td>{% get_age view_user.date_of_birth %} 岁</td>
+ <!--todo - redo this with blocktrans -->
+ <td>{% trans "age" %}</td>
+ <td>{% get_age view_user.date_of_birth %} {% trans "age unit" %}</td>
</tr>
{% endif %}
{% if votes_today_left %}
<tr>
- <td>今日剩余投票数</td>
- <td><strong class="darkred">{{ votes_today_left }}</strong> 票</td>
+ <td>{% trans "todays unused votes" %}</td>
+ <td><strong class="darkred">{{ votes_today_left }}</strong> {% trans "votes left" %}</td>
</tr>
{% endif %}
</table>
@@ -83,4 +86,5 @@
</div>
</td>
</tr>
-</table> \ No newline at end of file
+</table>
+<!-- end user_info.html -->
diff --git a/templates/user_recent.html b/templates/user_recent.html
index bb2bc99d..70c074ad 100644
--- a/templates/user_recent.html
+++ b/templates/user_recent.html
@@ -1,3 +1,4 @@
+<!-- user_recent.html -->
{% extends "user.html" %}
{% load extra_tags %}
{% load humanize %}
@@ -22,4 +23,5 @@
</div>
{% endfor %}
</div>
-{% endblock %} \ No newline at end of file
+{% endblock %}
+<!-- end user_recent.html -->
diff --git a/templates/user_reputation.html b/templates/user_reputation.html
index aad8db44..7a1c7366 100644
--- a/templates/user_reputation.html
+++ b/templates/user_reputation.html
@@ -1,3 +1,4 @@
+<!-- user_reputation.html -->
{% extends "user.html" %}
{% load extra_tags %}
{% load humanize %}
@@ -37,4 +38,4 @@
{% endfor %}
</div>
</div>
-{% endblock %} \ No newline at end of file
+{% endblock %}<!-- end user_reputation.html -->
diff --git a/templates/user_responses.html b/templates/user_responses.html
index 0ada494c..45aab21b 100644
--- a/templates/user_responses.html
+++ b/templates/user_responses.html
@@ -1,3 +1,4 @@
+<!-- user_responses.html -->
{% extends "user.html" %}
{% load extra_tags %}
{% load humanize %}
@@ -9,7 +10,7 @@
<div style="width:150px;float:left">{% diff_date response.time 3 %}</div>
<div style="width:100px;float:left"><a href="{{ response.userlink }}">{{ response.username }}</a></div>
<div style="float:left;overflow:hidden;width:680px">
- <strong {% ifequal response.type "回答问题"%}class="user-action-2"{% endifequal %}{% ifequal response.type "最佳答案"%}class="user-action-8"{% endifequal %}>{{ response.type }}</strong>:
+ <strong {% ifequal response.type "question_answered" %}class="user-action-2"{% endifequal %}{% ifequal response.type "answer_accepted" %}class="user-action-8"{% endifequal %}>{{ response.type }}</strong>:
<a href="{{ response.titlelink }}">{{ response.title }}</a><br>
{{ response.content|safe }}
<div style="height:10px"></div>
@@ -18,4 +19,5 @@
</div>
{% endfor %}
</div>
-{% endblock %} \ No newline at end of file
+{% endblock %}
+<!-- end user_responses.html -->
diff --git a/templates/user_stats.html b/templates/user_stats.html
index f6f55246..a5be1a77 100644
--- a/templates/user_stats.html
+++ b/templates/user_stats.html
@@ -1,4 +1,6 @@
+<!-- user_stats.html -->
{% extends "user.html" %}
+{% load i18n %}
{% load extra_tags %}
{% load humanize %}
{% block usercontent %}
@@ -10,7 +12,7 @@
<div style="text-align: right;" class="count">{{questions|length}}</div>
</td>
<td>
- <h2>个问题</h2>
+ <h2>{% trans "User questions" %}</h2>
</td>
</tr>
</table>
@@ -23,7 +25,7 @@
<div style="text-align: right;" class="count">{{answered_questions|length}}</div>
</td>
<td >
- <h2>个回答</h2>
+ <h2>{% trans "Answers" %}</h2>
</td>
</tr>
</table>
@@ -31,12 +33,14 @@
{% for answered_question in answered_questions %}
<div class="answer-summary">
<a title="{{answered_question.summary}}" href="/questions/{{answered_question.id}}/{{answered_question.title}}#{{answered_question.answer_id}}">
- <div class="answer-votes {% if answered_question.accepted %}answered-accepted{% endif %}" title="该回答总共有{{ answered_question.vote_count }}个投票&#13;{% if answered_question.accepted %}该回答已被设为最佳答案{%endif%}">
+ <div class="answer-votes {% if answered_question.accepted %}answered-accepted{% endif %}"
+ title="{% blocktrans with answered_question.vote_count as vote_count %}the answer has been voted for {{ vote_count }} times{% endblocktrans %}&#13;{% if answered_question.accepted %}{% trans "this answer has been selected as correct" %}{%endif%}">
{{ answered_question.vote_count }}
</div>
</a>
<div class="answer-link">
- <a href="/questions/{{answered_question.id}}/{{answered_question.title}}#{{answered_question.answer_id}}">{{answered_question.title}}</a> {% if answered_question.comment_count %}<span title="该回答有{{ answered_question.comment_count }}条评论">({{answered_question.comment_count}})</span>{% endif %}
+ <a href="/questions/{{answered_question.id}}/{{answered_question.title}}#{{answered_question.answer_id}}">{{answered_question.title}}</a> {% if answered_question.comment_count %}<span
+ title="{% blocktrans %}the answer has been commented {{ answered_question.comment_count }} times{% endblocktrans %}">({{answered_question.comment_count}})</span>{% endif %}
</div>
</div>
{% endfor %}
@@ -49,7 +53,7 @@
<div style="text-align: right;" class="count">{{total_votes}}</div>
</td>
<td >
- <h2>个投票</h2>
+ <h2>{% trans "votes total" %}</h2>
</td>
</tr>
</table>
@@ -58,12 +62,12 @@
<tr>
<td width="60">
<img style="cursor: default;" align="absmiddle" src="/content/images/vote-arrow-up-on.png"/>
- <span title="该用户投的赞成票总数" class="vote-count">{{up_votes}}</span>
+ <span title="{% trans "user has voted up this many times" %}" class="vote-count">{{up_votes}}</span>
</td>
<td width="60">
<img style="cursor: default;" align="absmiddle" src="/content/images/vote-arrow-down-on.png"/>
- <span title="用户投的反对票总数" class="vote-count">{{down_votes}}</span>
+ <span title="{% trans "user voted down this many times" %}" class="vote-count">{{down_votes}}</span>
</td>
</tr>
@@ -77,7 +81,7 @@
<div style="text-align: right;" class="count">{{tags|length}}</div>
</td>
<td >
- <h2>个标签</h2>
+ <h2>{% trans "Tags" %}</h2>
</td>
</tr>
</table>
@@ -86,7 +90,9 @@
<tr>
<td width="180" valign="top">
{% for tag in tags%}
- <a rel="tag" title="查看有关'{{ tag }}'的问题" href="{% url forum.views.tag tag|urlencode %}">{{tag.name}}</a><span class="tag-number"> × {{ tag.used_count|intcomma }}</span><br>
+ <a rel="tag"
+ title="{% blocktrans %}see other questions tagged '{{ tag }}' {% endblocktrans %}"
+ href="{% url forum.views.tag tag|urlencode %}">{{tag.name}}</a><span class="tag-number"> × {{ tag.used_count|intcomma }}</span><br>
{% if forloop.counter|divisibleby:"10" %}
</td>
<td width="180" valign="top">
@@ -104,7 +110,7 @@
<div style="text-align: right;" class="count">{{total_awards}}</div>
</td>
<td >
- <h2>枚奖牌</h2>
+ <h2>{% trans "Badges" %}</h2>
</td>
</tr>
</table>
@@ -125,3 +131,4 @@
</div>
{% endblock %}
+<!-- end user_stats.html -->
diff --git a/templates/user_tabs.html b/templates/user_tabs.html
index 165b1b9f..03a9d111 100644
--- a/templates/user_tabs.html
+++ b/templates/user_tabs.html
@@ -1,20 +1,34 @@
+<!-- user_tabs.html -->
{% load extra_filters %}
+{% load i18n %}
<div class="tabBar">
<div class="tabsA">
- <a id="stats" {% ifequal tab_name "stats" %}class="on"{% endifequal %} title="用户概览" href="/users/{{view_user.id}}/{{view_user.username}}?sort=stats">概览</a>
- <a id="recent" {% ifequal tab_name "recent" %}class="on"{% endifequal %} title="最近活动" href="/users/{{view_user.id}}/{{view_user.username}}?sort=recent">最近活动</a>
+ <a id="stats" {% ifequal tab_name "stats" %}class="on"{% endifequal %}
+ title="{% trans "User profile" %}" href="/users/{{view_user.id}}/{{view_user.username}}?sort=stats">{% trans "overview" %}</a>
+ <a id="recent" {% ifequal tab_name "recent" %}class="on"{% endifequal %}
+ title="{% trans "recent activity" %}" href="/users/{{view_user.id}}/{{view_user.username}}?sort=recent">{% trans "recent activity" %}</a>
{% if request.user|is_user_self:view_user %}
- <a id="responses" {% ifequal tab_name "responses" %}class="on"{% endifequal %} title="其他用户的回复和评论" href="/users/{{view_user.id}}/{{view_user.username}}?sort=responses">回应</a>
+ <a id="responses" {% ifequal tab_name "responses" %}class="on"{% endifequal %}
+ title="{% trans "comments and answers to others questions" %}"
+ href="/users/{{view_user.id}}/{{view_user.username}}?sort=responses">{% trans "responses" %}</a>
{% endif %}
- <a id="reputation" {% ifequal tab_name "reputation" %}class="on"{% endifequal %} title="用户的社区积分历史" href="/users/{{view_user.id}}/{{view_user.username}}?sort=reputation">积分</a>
+ <a id="reputation" {% ifequal tab_name "reputation" %}class="on"{% endifequal %}
+ title="{% trans "graph of user reputation" %}"
+ href="/users/{{view_user.id}}/{{view_user.username}}?sort=reputation">{% trans "reputation history" %}</a>
{% if request.user|can_view_user_votes:view_user %}
- <a id="votes" {% ifequal tab_name "votes" %}class="on"{% endifequal %} title="用户所有投票" href="/users/{{view_user.id}}/{{view_user.username}}?sort=votes">投票</a>
+ <a id="votes" {% ifequal tab_name "votes" %}class="on"{% endifequal %}
+ title="{% trans "user vote record" %}" href="/users/{{view_user.id}}/{{view_user.username}}?sort=votes">{% trans "casted votes" %}</a>
{% endif %}
- <a id="favorites" {% ifequal tab_name "favorites" %}class="on"{% endifequal %} title="用户收藏的问题" href="/users/{{view_user.id}}/{{view_user.username}}?sort=favorites">收藏</a>
+ <a id="favorites" {% ifequal tab_name "favorites" %}class="on"{% endifequal %}
+ title="{% trans "questions that user selected as his/her favorite"
+ href="/users/{{view_user.id}}/{{view_user.username}}?sort=favorites">{% trans "favorites" %}</a>
<!--
{% if request.user|can_view_user_preferences:view_user %}
- <a id="preferences" {% ifequal tab_name "preferences" %}class="on"{% endifequal %} title="用户参数的设置" href="/users/{{view_user.id}}/{{view_user.username}}?sort=preferences">设置</a>
+ <a id="preferences" {% ifequal tab_name "preferences" %}class="on"{% endifequal %}
+ title="{% trans "user preference settings" %}"
+ href="/users/{{view_user.id}}/{{view_user.username}}?sort=preferences">{% trans "settings" %}</a>
{% endif %}
-->
</div>
-</div> \ No newline at end of file
+</div>
+<!-- end user_tabs.html -->
diff --git a/templates/user_votes.html b/templates/user_votes.html
index d50a3308..ec967704 100644
--- a/templates/user_votes.html
+++ b/templates/user_votes.html
@@ -1,6 +1,8 @@
+<!-- user_votes.html -->
{% extends "user.html" %}
{% load extra_tags %}
{% load humanize %}
+{% load i18n %}
{% block usercontent %}
<div style="padding-top:5px;font-size:13px;">
@@ -9,9 +11,9 @@
<div style="width:150px;float:left">{% diff_date vote.voted_at 3 %}</div>
<div style="width:30px;float:left">
{% ifequal vote.vote 1 %}
- <img src="/content/images/vote-arrow-up-on.png" title="赞成票">
+ <img src="/content/images/vote-arrow-up-on.png" title="{% trans "upvote" %}">
{% else %}
- <img src="/content/images/vote-arrow-down-on.png" title="反对票">
+ <img src="/content/images/vote-arrow-down-on.png" title="{% trans "downvote" %}">
{% endifequal %}
</div>
<div style="float:left;overflow:hidden;width:750px">
@@ -25,4 +27,5 @@
</div>
{% endfor %}
</div>
-{% endblock %} \ No newline at end of file
+{% endblock %}
+<!-- end user_votes.html -->
diff --git a/templates/users.html b/templates/users.html
index 16a83b21..c3c9f790 100644
--- a/templates/users.html
+++ b/templates/users.html
@@ -1,9 +1,11 @@
{% extends "base_content.html" %}
{% load extra_tags %}
{% load humanize %}
-{% block title %}{% spaceless %}用户列表{% endspaceless %}{% endblock %}
+{% load i18n %}
+{% block title %}{% spaceless %}{% trans "Users" %}{% endspaceless %}{% endblock %}
{% block forejs %}
<script type="text/javascript">
+ //todo move javascript out
$().ready(function(){
$("#nav_users").attr('className',"on");
$("#type-user").attr('checked',true);
@@ -14,27 +16,26 @@
Hilite.elementid = "main-body";
Hilite.debug_referrer = location.href;
});
-
</script>
{% endblock %}
{% block content %}
<div class="tabBar">
- <div class="headUsers">用户列表</div>
+ <div class="headUsers">{% trans "Users" %}</div>
<div class="tabsA">
- <a id="sort_reputation" href="?sort=reputation" class="off" title="积分">积分</a>
- <a id="sort_newest" href="?sort=newest" class="off" title="最新加入">最新加入</a>
- <a id="sort_last" href="?sort=last" class="off" title="最先加入">最先加入</a>
- <a id="sort_user" href="?sort=user" class="off" title="用户名">用户名</a>
+ <a id="sort_reputation" href="?sort=reputation" class="off" title="{% trans "reputation" %}">{% trans "reputation" %}</a>
+ <a id="sort_newest" href="?sort=newest" class="off" title="{% trans "recent" %}">{% trans "recent" %}</a>
+ <a id="sort_last" href="?sort=last" class="off" title="{% trans "oldest" %}">{% trans "oldest" %}</a>
+ <a id="sort_user" href="?sort=user" class="off" title="{% trans "by username" %}">{% trans "by username" %}</a>
</div>
</div>
<div id="main-body" style="width:100%">
<p>
{% if suser %}
- 匹配查询 '<span class="darkred"><strong>{{ suser }}</strong></span>' 的所有用户名:
+ {% blocktrans %}users matching query {{suser}}:{% endblocktrans %}
{% endif %}
{% if not users.object_list %}
- <span >没有找到相关数据。</span>
+ <span>{% trans "Nothing found." %}</span>
{% endif %}
</p>
<div class="userList">
@@ -67,4 +68,5 @@
<div class="pager">
{% cnprog_paginator context %}
</div>
-{% endblock %} \ No newline at end of file
+{% endblock %}
+<!-- end users.html -->
diff --git a/templates/users_questions.html b/templates/users_questions.html
index f797a6b8..dfb87c8f 100644
--- a/templates/users_questions.html
+++ b/templates/users_questions.html
@@ -1,17 +1,21 @@
+<!-- users_questions.html -->
{% load extra_tags %}
{% load extra_filters %}
{% load humanize %}
+{% load i18n %}
<div class="user-stats-table">
{% for question in questions%}
{% if question.favourite_count %}
{% if question.favorited_myself %}
<div class="favorites-count">
- <img title="这个问题被 {{question.favourite_count}} 位用户收藏" src="/content/images/vote-favorite-on.png">
+ <img title="{% trans "this questions was selected as favorite" %} {{question.favourite_count}} {% trans "number of times" %}"
+ src="/content/images/vote-favorite-on.png">
<div><b>{{question.favourite_count|intcomma}}</b></div>
</div>
{% else %}
<div class="favorites-count-off">
- <img title="这个问题被 {{question.favourite_count}} 位用户收藏" src="/content/images/vote-favorite-off.png">
+ <img title="{% trans "this question was selected as favorite" %}{{question.favourite_count}} {% trans "number of times" %}"
+ src="/content/images/vote-favorite-off.png">
<div><b>{{question.favourite_count|intcomma}}</b></div>
</div>
{% endif %}
@@ -23,17 +27,17 @@
<div class="stats">
<div class="votes">
<div class="vote-count-post">{{question.vote_count|intcomma}}</div>
- 票
+ {% trans "votes" %}
</div>
- <div title="{% if question.answer_accepted %}有答案已被接受为正确答案{% endif %}" class="status {% if question.answer_accepted %}answered-accepted{% endif %} {% ifequal question.answer_count 0 %}unanswered{% endifequal %}{% ifnotequal question.answer_count 0 %}answered{% endifnotequal %}">
+ <div title="{% if question.answer_accepted %}{% trans "this answer has been accepted to be correct" %}{% endif %}" class="status {% if question.answer_accepted %}answered-accepted{% endif %} {% ifequal question.answer_count 0 %}unanswered{% endifequal %}{% ifnotequal question.answer_count 0 %}answered{% endifnotequal %}">
<div class="answer-count-post">{{question.answer_count|intcomma}}</div>
- 回答
+ {% trans "answers" %}
</div>
<div class="views">
<div class="views-count-post">{{question.view_count|cnprog_intword|safe}}</div>
- 浏览
+ {% trans "views" %}
</div>
</div>
</a>
@@ -44,7 +48,8 @@
<div class="tags">
{% convert2tagname_list question %}
{% for tag in question.tagnames %}
- <a href="{% url forum.views.tag tag|urlencode %}" title="查看有关'{{ tag }}'的问题" rel="tag">{{ tag }}</a>
+ <!--todo - move trans below to blocktrans -->
+ <a href="{% url forum.views.tag tag|urlencode %}" title="{% trans "see questions tagged" %} '{{ tag }}' {% trans "using tags" %}" rel="tag">{{ tag }}</a>
{% endfor %}
</div>
<div class="started">
@@ -57,4 +62,5 @@
</div>
<br clear="both"/>
{% endfor %}
-</div> \ No newline at end of file
+</div>
+<!-- end users_questions.html -->